準備單一登入 (SSO) > Okta 組態範例 > 在 Okta 建立 ThingWorx 的應用程式整合
  
在 Okta 建立 ThingWorx 的應用程式整合
SAML
1. 登入 Okta 管理控制台。
* 
您必須擁有管理員身分。
2. 導覽至「Applications」 > 「Applications」。然後,按一下「Create App Integration」
3. 「Create a new application integration」視窗上,將「Sign-in method」設為「SAML 2.0」,然後按一下「Next」
4. 「Create SAML Integration」頁面的 「General Settings」標籤上,輸入下列資訊,然後按一下「Next」
「App name」- 命名您的應用程式 (例如,ThingworxSAML)
「App logo」- (選用) 為您的應用程式新增標誌
「App visibility」- 選取是否要向使用者顯示應用程式圖示
5. 「Configure SAML」標籤上,輸入及選取下列資訊:
「Single Sign On URL」- 輸入 http://<ThingWorx FQDN>:<port>/Thingworx/saml/SSO
* 
「Use this for Recipient URL and Destination URL」核取方塊維持在選取狀態。
「Audience URI (SP Entry ID)」- 輸入 ThingWorxSP
「Default RelayState」- 留白
「Name ID format」- 選取「Unspecified」
「Application username」- 選取「Okta username」
「Update application username on」- 選取「Create and update」
6. 在存取「Configure SAML」標籤時,向下捲動至「ATTRIBUTE STATEMENTS」
7. 「Name」欄位中輸入 user.firstName,將「Name format」維持在「Unspecified」的狀態,然後將「Value」選取為「user.firstName」。按一下「Add Another」
8. 在新的屬性陳述式集欄位上,於「Name」欄位輸入「user.email」,將「Name format」維持在「Unspecified」的狀態,然後將「Value」選取為「user.email」
9. 「Group Attribute Statements (optional)」下的「Name」欄位中輸入 角色,將「Name format」維持在「Unspecified」的狀態,然後在「Starts with」輸入 gr
10. 按一下「Next」。在「Feedback」標籤上,按一下「Finish」
11. 您的應用程式整合已建立,系統將導覽您前往新應用程式的「Sign On」標籤。
12. 「Sign On」標籤中,按一下「Metadata URL」下的「Copy」,然後將其貼上至新的瀏覽器標籤中。在顯示檔案內容時,在頁面上按一下滑鼠右鍵,然後根據您使用的瀏覽器選取「Save As」「Save Page As」。如果使用 Chrome 或 Edge,檔案下載格式為 XML 檔案。
* 
倘若單純複製及貼上輸出,可能會產生格式問題,因此務必使用「Save As」
13. 導覽至系統上的「ThingworxPlatfm」資料夾,然後開啟「platform-settings.json」檔案,請務必依下列進行設定。
14. 在系統上的相同「ThingworxPlatform」資料夾內,開啟「ssoSecurityConfig」資料夾,然後開啟「sso-settings.json」檔案。請務必在 BasicSettings 下方完成以下組態:
* 
如要詳細了解 ssoSecurityConfig 資料夾和 sso-settings.json 檔案,請前往 ThingWorx 說明中心參閱〈建立 ssoSecurityConfig 目錄〉和〈配置 sso-settings.json 檔案〉。
idpMetadataFilePath - 指定您在步驟 11 中複製的metadata_okta.xml 檔案路徑。
metadataEntityId - 在 Okta 中應用程式的「General」標籤上,於「SAML Settings」部份輸入「Audience Restriction」的欄位值 (如步驟 4 所示)。
samlAssertionUserNameAttributeName - 從您 (於步驟 8) 建立的屬性陳述式,輸入 user.email 名稱。
15. 在開啟「sso-settings.json」檔案後,請務必在 ApplicationKeySettings 下方將 enabled 參數設定為 true
16. 接下來,在「sso-settings.json」檔案中,捲動至 KeyManagerSettings,並確保提供下列資訊:
17. 進行儲存,然後關閉「sso-settings.json」檔案。
18. 重新啟動 ThingWorx。
19. 使用適當的認證以管理員身分登入 ThingWorx Composer,進一步核對是否已正確配置 Okta 驗證。
20. 登入成功後,導覽至 ThingworxSSOAuthenticator「Configuration」標籤,在您於步驟 9 建立的群組屬性「Groups」輸入角色
* 
如果嘗試登入失敗且出現「403 App Not Assigned」錯誤,請將使用者指派至 Okta 中的 ThingWorx 應用程式,然後嘗試重新登入。
OAuth 2.0
1. 登入 Okta 管理控制台。
2. 導覽至「Applications」 > 「Applications」
3. 「Create App Integration」視窗上,選取「OIDC – OpenID Connect」。選取此選項後,就會顯示「Application type」部份。選取「Web Application」,然後按一下「Next」
4. 「General Settings」下,輸入下列資訊,然後按一下「Save」
「App name」- 命名您的應用程式 (例如 ThingworxResourceProvider)
「Logo」- (選用) 為您的應用程式新增標誌
「Proof of possession」- 選取是否在權杖請求中要求提供 Demonstrating Proof of Possession (DPoP) 標題
「Grant type」- 在預設情況下,在「Client acting on behalf of a user」下的「Authorization Code」核取方塊會保有選取狀態
「Sign-in redirect URIs」- 輸入您的登入重新導向 URI。例如 http://localhost:8515/Thingworx/oauth2_authorization_code_redirect
「Assignments」- 選取 「Skip group assignments for now」
5. 接下來,導覽至「Security」 > 「API」。在「Authorization Servers」標籤中,按一下「default」
6. 「Scopes」標籤中,按一下「Add Scope」。將範圍命名為「THINGWORX」,然後按一下「Create」
7. 在繼續執行前,請先確認已將 ThingWorx 配置為資源伺服器。如需詳細資訊,請前往 ThingWorx 說明中心參閱〈將 ThingWorx 配置為資源伺服器〉
8. 導覽至系統上的「ThingworxPlatform」資料夾,然後開啟「resourceServerSettings.json」檔案。設定下列值:
屬性
userAuthenticationConverterUserNameAttribute
sub
此值將成為在 Okta「default」授權伺服器之索賠名稱。您可以導覽至「Security」 > 「API」 > 「Authorization Servers」 > 「default」 > 「Claims」來找到此值。
oathTokenEndPoint
此值將與中繼資料 URL 的 token_endpoint 值相同。如要尋找此值,請開啟 Okta 管理控制台,然後導覽至「Security」 > 「API」 > 「Authorization Servers」 > 「default」 > 「Settings」。按一下「Metadata URI」,然後找到 token_endpoint 的值。應該與下列相似:
https://<unique_server_name>.okta.com/oauth2/default/v1/token
checkTokenEndpointUrl
此值將與中繼資料 URL 的 introspection_endpoint 值相同。如要尋找此值,請開啟 Okta 管理控制台,然後導覽至「Security」 > 「API」 > 「Authorization Servers」 > 「default」 > 「Settings」。按一下「Metadata URI」,然後找到 introspection_endpoint 的值。應該與下列相似:
https://<unique_server_name>.okta.com/oauth2/default/v1/introspect
clientId
此值將與 Okta 中「ThingworxResourceProvider」應用程式的「用戶端 ID」欄位值相同。
如要找到此值,請開啟 Okta 管理控制台,然後按一下左側導覽面板上的「Applications」 > 「Applications」。 按一下「ThingworxResourceProvider」應用程式。在「General」標籤的「Client Credentials」下方,找到「Client ID」欄位。
clientSecret
此值將與 Okta 中「ThingworxResourceProvider」應用程式的「用戶端密碼」欄位值相同。
如要找到此值,請開啟 Okta 管理控制台,然後按一下左側導覽面板上的「Applications」。按一下「ThingworxResourceProvider」應用程式。在「General」標籤的「Client Credentials」下方,找到「CLIENT SECRETS」部份。
9. 使用 Postman 取得 OAuth 存取權杖。如需詳細資訊,請參閱〈使用 Postman 獲取 ThingWorx 系統管理員的 OAuth 存取權杖〉。
10. 接下來,您將Experience Service 建立應用程式整合