准备单一登录 (SSO) > Okta 配置示例 > 在 Okta 中创建 ThingWorx 的 App 集成
  
在 Okta 中创建 ThingWorx 的 App 集成
SAML
1. 登录 Okta Admin Console。
* 
您必须是管理员。
2. 导航至 Applications > Applications。单击 Create App Integration
3. Create a new application integration 窗口中,选择 SAML 2.0 作为 Sign-in method,然后单击 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. 在新的属性语句字段集内,输入 user.email - 在 Name 字段中,对于 Name format 保留 Unspecified,对于 Value 选择 user.email
9. Group Attribute Statements (optional) 下,在 Name 字段中输入 role,对于 Name format 保留 Unspecified,对于 Starts with 输入 gr
10. 单击 Next。在 Feedback 选项卡上,单击 Finish
11. 您的应用集成创建完毕,将前往新应用的 Sign On 选项卡。
12. Sign On 选项卡上,单击 Metadata URL 下的 Copy,将其粘贴到新的浏览器选项卡中。显示文件内容时,右键单击页面,根据您所使用的浏览器选择 Save AsSave Page As。如果使用 Chrome 或 Edge,则文件将以 XML 文件格式下载。
* 
直接复制和粘贴输出会产生格式问题,因此请务必使用 Save As
13. 导航至系统上的 ThingworxPlatform 文件夹,打开 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“配置”选项卡,对于您在步骤 9 中创建的组属性,在“组”中输入 role
* 
如果登录尝试失败并显示 403 App Not Assigned 错误,请在 Okta 中将用户分配到 ThingWorx 应用程序,然后重试登录。
OAuth 2.0
1. 登录 Okta Admin Console。
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 - 选择是否要求在令牌请求中提供持有证明令牌 (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。将 scope 命名为 THINGWORX,然后单击 Create
7. 在继续操作之前,请确保已将 ThingWorx 配置为资源服务器。有关详情,请参阅 ThingWorx 帮助中心的将 ThingWorx 配置为资源服务器
8. 导航至系统上的 ThingworxPlatform 文件夹,然后打开 resourceServerSettings.json 文件。指定以下值:
属性
userAuthenticationConverterUserNameAttribute
sub
此值是在 Okta 中的 default 授权服务器上创建的声明的名称。要查找此值,请导航至 Security > API > Authorization Servers > default > Claims
oathTokenEndPoint
此值与 Metadata URL 中 token_endpoint 的值相同。要查找此值,请打开 Okta Admin Console,导航至 Security > API > Authorization Servers > default > Settings。单击 Metadata URI 并查找 token_endpoint 值。其格式如下:
https://<唯一的服务器名称>.okta.com/oauth2/default/v1/token
checkTokenEndpointUrl
此值与 Metadata URL 中 introspection_endpoint 的值相同。要查找此值,请打开 Okta Admin Console,导航至 Security > API > Authorization Servers > default > Settings。单击 Metadata URI 并查找 introspection_endpoint 值。其格式如下:
https://<唯一的服务器名称>.okta.com/oauth2/default/v1/introspect
clientId
这与 Okta 中 ThingworxResourceProvider 应用程序的 Client ID 字段的值相同。
要查找此值,请打开 Okta Admin Console,在左侧导航窗格中,导航至 Applications > Applications。单击 ThingworxResourceProvider 应用程序。在 General 选项卡上,找到 Client Credentials 下的 Client ID 字段。
clientSecret
这与 Okta 中 ThingworxResourceProvider 应用程序的 Client secret 字段的值相同。
要查找此值,请打开 Okta Admin Console,单击左侧导航面板中的 Applications。单击 ThingworxResourceProvider 应用程序。在 General 选项卡上,在 Client Credentials 下找到 CLIENT SECRETS 部分。
9. 使用 Postman 获取 OAuth 访问令牌。有关详情,请参阅使用 Postman 为 ThingWorx 管理员获取 OAuth 访问令牌
10. 接下来,Experience Service 创建应用程序集成