示例:实施 SSO,其中 PingFederate 作为中央身份验证服务器,AD FS 作为标识提供者,SCIM 作为用户设置方法,Windchill 作为资源服务器
本示例提供了如何配置以下环境的详细步骤:该环境将 ThingWorx 配置为单一登录,其中 PingFederate 作为中央身份验证服务器 (CAS),Active Directory 联合身份验证服务 (AD FS) 作为标识提供者 (IdP),Windchill 作为资源服务器。
下表显示了该示例中配置的应用程序及其角色:
角色
|
应用程序
|
服务提供者
|
ThingWorx
|
中央身份验证服务器
|
PingFederate
|
标识提供者
|
AD FS
|
资源服务器
|
Windchill
|
下图显示了本示例中所讨论的配置。
有关使用此体系结构的 SSO 实施概述,请参阅文章
CS271789 中提供的视频。
在开始 SSO 实施前,请查看以下决策树,其中突出显示了带有 PingFederate 的 ThingWorx Navigate 和 Windchill 部署过程中的关键决策点。此图表显示了基于最佳做法、可用性和典型使用案例的推荐路径。
| 此外,IdP 和 LDAP 还有其他一些组合形式,此图表中并未涉及。例如,可将 Windows 主机上的 Microsoft Active Directory 与 Linux 主机上的 ThingWorx 和 Windchill 搭配使用,但该搭配既非典型搭配,也非首选搭配。 如果要使用 Shibboleth SP 来简化 Windchill 的 SSO,则需要 11.0 M020 或更高版本。 |
第 1 部分:先决条件
1. 通过以下方法更新环境中所用计算机的 hosts 文件:
◦ PingFederate 计算机 - 添加 AD FS、ThingWorx 和 PingFederate 计算机。
◦ ThingWorx 计算机 - 添加 AD FS、ThingWorx 和 PingFederate 计算机。
◦ Windchill 计算机 - 添加 ThingWorx 和 PingFederate 计算机。
停止 ThingWorx 服务器。
| 请确保更新并配置 Tomcat,以允许 ThingWorx 在跨域环境中运行。有关详细信息,请参阅 此文章。 |
3. 安装或将
PingFederate 升级 至
ThingWorx 所支持的最新修补程序。
5. 设置和配置 AD FS,并确保具有如下属性值和文件:
◦ uid
◦ email
◦ group
◦ 元数据文件
◦ 签名许可证
第 2 部分:手动配置 AD FS 的身份验证
步骤 1:创建 PingFederate 全局 SSL 证书
1. 以管理员身份登录 PingFederate。搜索 SSL Server Certificates 并打开搜索结果。
2. 单击 Create New 以创建全局 SSL 证书,然后执行以下操作:
a. 在 Common Name 字段中,提供 PingFederate 计算机的 FQDN。
b. 在该页面上提供其他详细信息,然后单击 Next。
c. 确保选中以下复选框,然后单击 Save。
d. 单击 SSL Server Certificates。
e. 对于所创建的 SSL 证书,请在 Select Action 列表中选择 Activate Default for Runtime Server,然后选择 Activate Default for Admin Console。单击 Save。
此 SSL 证书将被标记为管理控制台和运行时服务器的 default。
3. 对于 localhost 证书,请执行以下操作:
a. 在 Select Action 列表中,相继选择 Deactivate for Runtime Server 和 Deactivate for Admin Console。
b. 删除 localhost 证书,然后单击 Save。
步骤 2:创建服务提供者合同
1. 在 PingFederate 中,搜索 Policy Contract 并打开搜索结果。
2. 单击 Create New Contracts,然后执行以下操作:
a. 在 Contract Info 字段中,输入合同名称,例如 SPContract,然后单击 Next。
b. 在 Contract Attributes 下,若要延长以下属性的合同期限,请针对每个属性单击 Add:
▪ uid
▪ email
▪ group
默认情况下会提供 subject 属性。
c. 单击 Next,然后在 Summary 页面上,单击 Save。
d. 在 Authentication Policy Contracts 页面上,单击 Save。
步骤 3:下载 AD FS FederationMetadata.xml 文件
1. 在 AD FS 计算机的浏览器中,输入以下 URL 以下载联合元数据文件:
https://ADSF_Host.ADFS_Domain/FederationMetadata/2007-06/FederationMetadata.xml
2. 将所下载文件复制到 PingFederate 计算机。
步骤 4:创建 PingFederate IdP 连接
A) 指定用于创建 IdP 连接的常规信息
1. 在 PingFederate 中,搜索 IdP Connections 并打开搜索结果。单击 Create Connection。
2. 在 Connection Type 选项卡上,选中 BROWSER SSO Profiles 复选框,然后单击 Next。
3. 在 Connection Options 选项卡上,选中 BROWSER SSO 和 OAUTH ATTRIBUTE MAPPING 复选框,然后单击 Next。
4. 在 Import Metadata 选项卡上,选择 File,然后单击 Choose File 并浏览至 FederationMetadata.xml 文件,然后单击 Next。
5. 在 Metadata Summary 选项卡上,单击 Next。
6. General Info 选项卡预填充有数据。您可根据需要更改 CONNECTION NAME。验证其余信息,然后单击 Next。
7. 在 Browser SSO 选项卡上,单击 Configure Browser SSO。Browser SSO 页面随即打开,在此页面中您需要为您的浏览器指定单一登录设置。
B) 配置浏览器 SSO 设置
1. 在 Browser SSO 页面的 SAML Profiles 选项卡上,选择以下选项,然后单击 Next:
▪ IDP-INITIATED SSO
▪ SP-INITIATED SSO
2. 在 User-Session Creation 选项卡上,单击 Configure User-Session Creation。User-Session Creation 页面随即打开,在此页面中您需要指定设置以配置用户创建。
C) 配置用户会话创建设置
1. 在 Identity Mapping 选项卡上,接受默认设置,然后单击 Next。
2. 在 Attribute Contract 选项卡上,验证自动填充的属性,然后单击 Next。
3. 在 Target Session Mapping 选项卡上,单击 Map New Authentication Policy。Authentication Policy Mapping 页面随即打开,在此页面中您需要为身份验证策略映射指定设置。
D) 配置身份验证策略映射设置
1. 在
Authentication Policy Contract 列表中,选择您在
第 2 部分 - 步骤 2 中创建的合同,即
SPContract。验证是否显示了所有属性,然后单击
Next。
2. 在 Attribute Retrieval 选项卡上,接受默认设置,然后单击 Next。
3. 在 Contract Fulfillment 选项卡上,为 email、group、subject 和 uid 身份验证策略合同选择以下值:
▪ 在 Source 列表中,选择 Assertion。
▪ 在 Value 列表中,从列表内选择相应条目。
单击 Next。
4. 在 Issuance Criteria 选项卡上,单击 Next。
5. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。User-Session Creation 页面随即打开,在此页面中您需要查看用户会话创建的配置设置。
E) 查看用户会话创建配置设置
1. User-Session Creation 页面上的 Target Session Mapping 选项卡显示了映射新身份验证策略期间所选择的信息。单击 Next。
2. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Browser SSO 页面随即打开。
3. Browser SSO 页面上的 User-Session Creation 选项卡显示了配置用户会话创建期间所输入的信息。单击 Next。
4. 在 OAuth Attribute Mapping 选项卡上,相继选择 Map Directly Into Persistent Grant 和 Configure OAuth Attribute Mapping,然后执行以下操作:
a. 在 Data Store 选项卡上,单击 Next。
b. 在 Contract Fulfilment 选项卡中,将 USER_KEY 和 USER_NAME 的 Source 选为 Assertion,Value 选为 name attribute from ADFS,然后单击 Next。
c. 在 Issuance Criteria 选项卡上,单击 Next。
5. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。在 OAuth Attribute Mapping Configuration 页面上,单击 Next。
6. 在 Protocol Settings 选项卡上,单击 Configure Protocol Settings。Protocol Settings 页面随即打开,在此页面中您需要指定协议设置。
F) 配置和查看协议设置
1. 在 SSO Service URLs 选项卡上,单击 Next。
2. 在 Allowable SAML Bindings 选项卡上,执行以下操作,然后单击 Next:
a. 选中以下复选框:
▪ POST
▪ REDIRECT
b. 清除以下复选框:
▪ ARTIFACT
▪ POST
3. 跳过 Overrides 选项卡上的设置,然后单击 Next。
4. 在 Signature Policy 选项卡上,单击 SPECIFY ADDITIONAL SIGNATURE REQUIREMENTS 并选中其下的两个复选框,然后单击 Next。
5. 在 Encryption Policy 选项卡上,单击 ALLOW ENCRYPTED SAML ASSERTIONS AND SLO MESSAGES 并选中 THE ENTIRE ASSERTION 复选框,然后单击 Next。
6. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Browser SSO 页面随即打开。
7. Browser SSO 页面上的 Protocol Settings 选项卡显示了配置协议设置时所选择的信息。单击 Next。
8. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。IdP Connection 页面随即打开。
9. 在 IdP Connection 页面的 Browser SSO 选项卡上,单击 Next。
10. 在 Credentials 选项卡上,单击 Configure Credentials。Credentials 页面随即打开,在此页面中您需要指定设置以配置凭据。
G) 配置凭据
1. 在 Digital Signature Settings 选项卡上,单击 Manage Certificates。
2. 要创建签名证书,请单击 Create New 并提供以下值,然后单击 Next:
▪ COMMON NAME
▪ ORGANIZATION
▪ COUNTRY
▪ VALIDITY (DAYS)—365
▪ KEY ALGORITHM—RSA
▪ KEY SIZE (BITS)—2048
▪ SIGNATURE ALGORITHM—RSA SHA256
3. 查看 Summary 选项卡中的信息。如果信息正确无误,请相继单击 Save 和 Done。
4. 在 Digital Signature Settings 选项卡上,针对所创建的 SIGNING CERTIFICATE,选中 INCLUDE THE CERTIFICATE IN THE SIGNATURE <KEYINFO> ELEMENT 复选框,然后单击 Next。
此应用程序层证书可用于以数字方式签署从 PingFederate 到 IdP 的请求。
5. 在 Signature Verification Settings 选项卡上,单击 Manage Signature Verification Settings。
a. 在 Trust Model 选项卡上,选择 UNANCHORED,然后单击 Next。
b. 在 Signature Verification Certificate 上,验证 IdP 签名证书是否已显示,然后单击 Next。
此应用程序层证书可用于从 IdP 到 PingFederate 请求的签名验证。当从 IdP 导入 metadata.xml 文件时,此证书会被自动导入 PingFederate。
c. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。
d. 在 Signature Verification Settings 选项卡上,单击 Next。
e. 在 Select Decryption Keys 中,选择 PingFederate 证书,然后单击 Next。
f. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。
g. 在 Credentials 页面上,单击 Next。
H) 激活 IdP 连接
在 Activation & Summary 页面上,确保 SSO Application Endpoint 已激活,然后单击 Save。
IdP 连接现已创建并激活。
I) 验证 IdP 连接
单击所创建的 IdP 连接、复制 SSO Application Endpoint URL、将其粘贴到浏览器中,然后验证其是否重定向至 IdP。这样一来,PingFederate 中的这一 URL 必将重定向至 AD FS。您将看到类似于下图的页面,其中包含了一条错误消息。
第 3 部分:配置 AD FS 信赖方
步骤 1:从 PingFederate 导出元数据 XML 文件
1. 在 PingFederate 中,转至 Service Provider,然后在 IDP Connections 下单击 Manage All。
2. 对于 IdP 连接,请在 Select Action 列表中单击 Export Metadata。
3. 在 Metadata Signing 页面上,单击 Next。
4. 在 Export & Summary 页面上,单击 Export 以将元数据文件下载至计算机上的 Downloads 文件夹,然后单击 Done。
5. 将元数据 XML 文件复制到 AD FS 计算机。
步骤 2:在 AD FS 中添加信赖方
1. 登录到 AD FS 服务器,然后打开 Server Manager。
2. 转至 > 。
3. 在 AD FS 下,右键单击 Relying Party Trusts,然后选择 Add Relying Party Trust。这可确保 AD FS 信任相关连接来自于 PingFederate。
4. 在 Add Relying Party Trust Wizard 窗口中,执行以下操作:
a. 单击 Start。
b. 在下一个屏幕上,单击 Import data about the relying party from a file。
c. 单击 Browse,导航至从 PingFederate 复制的 Metadata.xml 文件所在位置,以在 AD FS 中创建信赖方,然后单击 Next。
d. 提供一个 Display name,然后单击 Next。
请记下此名称以便后续使用。
e. 在以下窗口中单击 Next,直至到达 Finish 屏幕。然后,单击 Close。
当前条目随即将被添加至 Relying Part Trusts 列表。
您还应看到以下窗口 (它可能隐藏在当前窗口后面):
5. 要将 AD FS 属性映射至 Active Directory,请执行以下操作:
a. 在 Edit Claim Issuance Policy for <Relying Part Trust Name> 窗口中,单击 Add Rule,然后单击 Next。
b. 提供 Claim rule name,并将 Attribute store 设置为 Active Directory。
c. 在 Mapping of LDAP attributes to outgoing claim types 表中,从列表内选择值以将 AD FS 属性映射至 Active Directory 属性:
显示-名称 | 名称 |
SAM-帐户-名称 | 名称 ID |
电子邮件地址 | 电子邮件地址 |
为 DL 成员 | 组 |
d. 单击 Finish,然后单击 OK。
步骤 3:设置 AD FS 以加密完整消息和断言
1. 在 AD FS 计算机上,以管理员身份打开 Windows PowerShell。
2. 在 AD FS 计算机上运行以下命令以使通信正常工作:
Set-ADFSRelyingPartyTrust -TargetName <Relying Party Trust Name> -SamlResponseSignature "MessageAndAssertion"
其中,<Relying Party Trust Name> 为上述步骤 2 中创建并记下的信赖方信任名称。
此命令通过 Windows PowerShell 配置 SAML 响应签名。
第 4 部分:验证 IdP 连接终结点 URL
1. 在 PingFederate 中,复制 SSO Application Endpoint URL,然后将其粘贴到匿名窗口中。
2. 使用为 AD FS 创建的域名和管理员用户登录。
随即应收到以下消息:
第 5 部分:为 ThingWorx 创建 PingFederate 服务提供者连接
步骤 1:创建 ThingWorx 签名证书
1. 在 <ThingWorx Installation Folder>/ThingworxPlatform 文件夹中,创建 ssoSecurityConfig 文件夹。
2. 如下所示,创建 JKS 类型的 KeyStore,并将其命名为 sso-keystore JKS:
▪ 生成密钥对。
▪ 将证书的公共名称 (CN) 指定为 ThingWorx。
3. 将 thingworx.cer 从 sso-keystore.jks 导出到 ssoSecurityConfig 文件夹。
步骤 2:为 ThingWorx 配置服务提供者连接
A) 指定用于创建服务提供者连接的常规信息
1. 在 PingFederate 主页上搜索 SP Connections 组,然后单击 Create Connection。SP Connection 页面随即打开。
2. 在 Connection Template 选项卡上,选择 DO NOT USE A TEMPLATE FOR THIS CONNECTION,然后单击 Next。
3. 在 Connection Type 选项卡上,选中 Browser SSO Profiles 和 SAML 2.0 Protocol 复选框,然后单击 Next。
4. 在 Connection Options 选项卡上,选中 BROWSER SSO 复选框,然后单击 Next。
5. 在 Import Metadata 选项卡上,选择 None,然后单击 Next。
6. 在 General Info 选项卡上,执行以下任务:
a. 在 Partner’s Entity ID (Connection ID) 字段中,提供一个唯一值,例如 TWX_SP。
请记下该值以便在配置 ThingWorx sso-settings.json 文件时使用。
b. 在 Connection Name 字段中,提供一个描述性名称,例如 TWX_SP。
该名称将显示在 PingFederate SP 连接列表中。
c. 在 Base URL 字段中,键入部署了 ThingWorx 的服务器 URL,然后单击 Next。例如:https://{ThingWorxHost_FQDN}:8443。
7. 在 Browser SSO 选项卡上,单击 Configure Browser SSO。Browser SSO 页面随即打开,在此页面中您需要为您的浏览器指定单一登录设置。
B) 配置浏览器 SSO 设置
1. 在 Browser SSO 页面的 SAML Profiles 选项卡上,于 Single Sign-On (SSO) Profiles 部分下,选择下列选项,然后单击 Next:
▪ IDP-INITIATED SSO
▪ SP-INITIATED SSO
切勿在 Single Logout (SLO) Profiles 列中选择任何选项。
2. 在 Assertion Lifetime 选项卡上,将 Minutes Before 设置为 60,将 Minutes After 设置为 480。单击 Next。
3. 在 Assertion Creation 选项卡上,单击 Configure Assertion Creation。Assertion Creation 页面随即打开,在此页面中您需要为断言创建指定设置。
C) 配置断言创建设置
1. 在 Assertion Creation 页面的 Identity Mapping 选项卡上,单击 Standard,然后单击 Next。
2. 在 Attribute Contract 选项卡的 Attribute Contract 下,键入 SAML_Subject,然后选择 Subject Name Format 下的值。
3. 在 Attribute Contract 选项卡的 Extend the Contract 字段中,配置以下设置,并在每个值后单击 Add:
延长合同期限 | 属性名称格式 |
---|
group | urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified |
uid | urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified |
email | urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified |
单击 Next。
4. 在 Authentication Source Mapping 选项卡上,单击 Map New Authentication Policy。Authentication Policy Mapping 页面随即打开,在此页面中您需要为身份验证策略映射指定设置。
D) 配置身份验证策略映射设置
1. 在
Authentication Policy Mapping 页面上的
Authentication Policy Contract 列表中,选择您在
第 2 部分 - 步骤 2 中创建的属性合同,即
SPContract。单击
Next。
2. 在 Mapping Method 选项卡上,单击 USE ONLY THE AUTHENTICATION POLICY CONTRACT VALUES IN THE SAML ASSERTION,然后单击 Next。
3. 在 Attribute Contract Fulfillment 选项卡上,为 email、group、SAML_SUBJECT 和 uid 身份验证策略合同选择以下值:
▪ 在 Source 列表中,选择 Authentication Policy Contract。
▪ 在 Value 列表中,从列表内选择相应条目。
单击 Next。
4. 跳过 Issuance Criteria 选项卡上的设置,然后单击 Next。
5. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Assertion Creation 页面随即打开,在此页面中您需要查看断言创建的配置设置。
E) 查看断言创建配置设置
1. Assertion Creation 页面上的 Authentication Source Mapping 选项卡显示了映射新身份验证策略时所选择的信息。单击 Next。
2. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Browser SSO 页面随即打开。
3. Browser SSO 页面上的 Assertion Creation 选项卡显示了配置断言创建时所输入的信息。单击 Next。
4. 在 Protocol Settings 选项卡上,单击 Configure Protocol Settings。Protocol Settings 页面随即打开,在此页面中您需要指定协议设置。
F) 配置和查看协议设置
1. 请在 Protocol Settings 页面的 Assertion Consumer Service URL 选项卡上执行以下操作:
a. 选中 Default 复选框。
b. 在 Index 字段中,键入 0。
c. 在 Binding 列表中,选择 POST。
d. 在 Endpoint URL 字段中,键入 /Thingworx/saml/SSO。
e. 单击 Add,然后单击 Next。
2. 在 Allowable SAML Bindings 选项卡上,选择 POST 复选框,然后单击 Next。
3. 在 Signature Policy 选项卡上,选择以下选项,然后单击 Next:
▪ REQUIRE AUTHN REQUESTS TO BE SIGNED WHEN RECEIVED VIA THE POST OR REDIRECT BINDINGS
▪ ALWAYS SIGN THE SAML ASSERTION
4. 在 Encryption Policy 选项卡上,选择 The Entire Assertion,然后单击 Next。
5. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Browser SSO 页面随即打开。
6. Browser SSO 页面上的 Protocol Settings 选项卡显示了配置协议设置时所选择的信息。单击 Next。
7. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。SP Connection 页面随即打开。
8. 在 SP Connection 页面的 Browser SSO 选项卡上,单击 Next。
9. 在 Credentials 选项卡上,单击 Configure Credentials。Credentials 页面随即打开,在此页面中您需要指定设置以配置凭据。
G) 配置凭据
1. 请在 Digital Signature Settings 选项卡上执行以下任务:
a. 在 SIGNING CERTIFICATE 列表中,从列表内选择证书。
b. 选中 INCLUDE THE CERTIFICATE IN THE SIGNATURE <KEYINFO> ELEMENT 复选框。
单击 Next。
2. 在 Signature Verification Settings 选项卡上,单击 Save Draft。
3. 单击 Manage All,然后单击 Save。
H) 配置签名验证设置并导入和加密证书
1. 要恢复已保存的配置,请单击 Identity Provider,然后在 SP Connections 中单击 Manage All。
2. 单击已另存为草稿的 SP 连接 TWX_SP,然后单击 Manage Signature Verification Settings。
3. 在 Trust Model 选项卡上,选择 UNANCHORED,然后单击 Next。
在 Signature Verification Certificate 上,列表中无可用证书。
4. 单击 Manage Certificates,然后单击 Import。
5. 在
Import Certificate 选项卡上,单击
Choose file 并浏览至
第 5 部分 - 步骤 1 中创建的证书文件,然后单击
Next。
6. 在 Summary 选项卡中,确保 MAKE THIS THE ACTIVE CERTIFICATE 复选框处于选中状态。
7. 查看 Summary 页面上的信息。如果信息正确无误,请单击 Done。Certificate Management 页面随即打开。
8. 单击“完成”。Signature Verification 页面随即打开。
9. 在 Signature Verification Certificate 选项卡上,您应看到所导入的证书。单击 Next。
10. 在 Summary 页面上,单击 Done。
11. 在 Signature Verification Settings 选项卡上,单击 Next。
J) 加密证书
1. 在 Select XML Encryption Certificate 选项卡上,执行以下操作,然后单击 Next:
a. 为 Block Encryption Algorithm 选择 AES-128。
b. 为 Key Transport Algorithm 选择 RSA-OAEP。
c. 从列表中选择证书。
2. 查看 Summary 选项卡中的信息。如果信息正确无误,请单击 Done。Credentials 页面随即打开,在此页面中您需要查看签名验证的设置。
K) 激活 SP 连接
1. SP Connection 页面上的 Credentials 选项卡显示了配置凭证时所选择的信息。单击 Next。
2. 在 Activation & Summary 页面的 Connection Status 下,确保连接已启用。
3. 单击 Save。
连接将显示在 Identity Provider 页面上的 SP Connections 组下。
步骤 3:导出 ThingWorx 服务提供者连接元数据和 PingFederate 公用证书
A) 从 PingFederate 为 ThingWorx 导出元数据
1. 在 PingFederate 中的 SP Connections 下,单击 Manage All。
2. 对于在
第 5 部分 - 步骤 2 中创建的 SP 连接,即
TWX_SP,在
Select Action 列表中,单击
Export Metadata。
3. 在 Metadata Signing 选项卡中,单击 Next。
4. 在 Export & Summary 选项卡中,单击 Export。
随即将下载文件。
5. 单击“完成”。
B) 导出 PingFederate 公用证书
1. 在 PingFederate 中的 SP Connections 下,单击所选的 SP 连接 TWX_SP。
2. 在 Activation & Summary 选项卡的 Credentials 部分下,单击 Digital Signature Settings,然后执行以下操作:
3. 单击 Manage Certificates。
4. 对于证书,请在 Select Action 列表中单击 Export。
5. 选中 CERTIFICATE ONLY 复选框,然后单击 Export。
随即将下载文件。将此文件重命名为适当名称。例如:pingfedsigning.crt
6. 将此
PingFederate 公用证书文件导入
第 5 部分 - 步骤 1 中创建的
sso-keystore.jks KeyStore。
步骤 3:导出 ThingWorx 服务提供者连接元数据和 PingFederate 公用证书
A) 从 PingFederate 为 ThingWorx 导出元数据
1. 在 PingFederate 中的 SP Connections 下,单击 Manage All。
2. 对于在
第 5 部分 - 步骤 2 中创建的 SP 连接,即
TWX_SP,在
Select Action 列表中,单击
Export Metadata。
3. 在 Metadata Signing 选项卡中,单击 Next。
4. 在 Export & Summary 选项卡中,单击 Export。
随即将下载文件。
5. 单击 Done,然后单击 Save。
B) 导出 PingFederate 公用证书
1. 在 PingFederate 中的 SP Connections 下,单击所选的 SP 连接 TWX_SP。
2. 在 Activation & Summary 选项卡的 Credentials 部分下,单击 Digital Signature Settings,然后执行以下操作:
3. 单击 Manage Certificates。
4. 对于证书,请在 Select Action 列表中单击 Export。
5. 选中 CERTIFICATE ONLY 复选框,然后单击 Export。
随即将下载文件。将此文件重命名为适当名称。例如:pingfedsigning.crt
6. 将此
PingFederate 公用证书文件导入
第 5 部分 - 步骤 1 中创建的
sso-keystore.jks KeyStore。
第 6 部分:配置 ThingWorx 以进行单点登录
1. 停止 ThingWorx 服务器。
配置完 ThingWorx 以进行单点登录后,您的 ssoSecurityConfig 必须包含以下文件:
第 7 部分:创建 SSL 证书
步骤 1:将 ThingWorx SSL 证书导入 PingFederate Java cacerts 文件
1. 为 ThingWorx 创建密钥对 (KeyStore)。请确保将 ThingWorx 主机的 FQDN 用作 CN 值。
2. 从此密钥对中导出 ThingWorx 公用 SSL 证书。
3. 将 ThingWorx SSL 证书 (.crt) 导入 PingFederate 计算机上的 Java cacerts 文件。
4. 重新启动 PingFederate。
步骤 2:将 PingFederate SSL 证书导入 ThingWorx Java cacerts 文件
1. 要导出 PingFederate 证书,请执行以下操作:
a. 在 PingFederate 中,单击 > 。
b. 对于证书,请在 Select Action 列表中单击 Export,然后单击 Next。
c. 在 Export Certificate 选项卡上,确保默认值为 CERTIFCATE ONLY,然后单击 Next。
d. 在 Export & Summary 选项卡中,单击 Export。
随即将下载证书。
e. 将证书重命名为适当名称。例如:pingfedssl.cer。
2. 将 PingFederate SSL 证书 (.crt) 导入 ThingWorx 计算机上的 Java cacerts 文件。
第 8 部分:为 ThingWorx 创建 OAuth 客户端连接
| 请确保 Redirect URIS 字段中无空格,并在配置结束后单击 Save。 |
第 9 部分:验证在继续配置 SCIM 前 ThingWorx 是否启动
1. 启动 ThingWorx。
检查日志文件以确保其正确无误。
2. 使用在 AD FS 中创建的 Domain\username 登录到 ThingWorx。
第 10 部分:使用 ThingWorx 配置 SCIM
步骤 1:启用出站设置
1. 停止 PingFederate。
2. 停止 ThingWorx。
3. 在位于 <pf_install>/pingfederate/bin 的 run.properties 文件中,其中 <pf_install> 为 PingFederate 的安装位置,将 pf.provisioner.mode 的值更新为 STANDALONE。
pf.provisioner.mode=STANDALONE
4. 启动 PingFederate。
步骤 2:为 Active Directory 创建数据存储
1. 在 PingFederate 中,搜索 Data Stores。
2. 单击 Add new Data Store。
3. 输入 NAME,例如 LDAP_ADFS,将 TYPE 选为 Directory (LDAP),然后单击 Next。
4. 对于 HOSTNAME(S),请提供 AD FS 计算机的 FQDN。
5. 对于 USER DN,请输入 cn=Administrator,cn=Users,dc=thingworx,dc=com
6. 对于 PASSWORD,请提供您在 Active Directory 中设置的相同管理员密码,然后单击 Next。
7. 在 Summary 选项卡上,单击 Save。
步骤 3:创建密码凭据验证器实例
1. 在 PingFederate 中,搜索 Password Credential Validators。
2. 单击“创建新实例”。
3. 提供 INSTANCE NAME 和 INSTANCE ID 的值。
4. 在 TYPE 列表中,选择 Simple Username Password Credential Validator,然后单击 Next。
5. 在 Instance Configuration 选项卡上,单击 Add a new row to ‘Users’。
6. 提供现有 ThingWorx 用户 (例如管理员) 的 Username 和 Password。单击 Update,然后单击 Next。
7. 在 Summary 选项卡上,相继单击 Done 和 Save。
步骤 4:将密码凭据验证器实例映射至持久化授权合同
1. 在 PingFederate 中,搜索 Resource Owner Credentials Grant Mapping。
2. 在 SOURCE PASSWORD VALIDATOR INSTANCE 中,选择于上面创建的验证器,然后单击 Add Mapping。
3. 在 Attribute Sources & User Lookup 选项卡上,单击 Next。
4. 在 Contract Fulfillment 选项卡上,将 Source 设置为 Password Credential Validator,将 Value 设置为 username,然后单击 Next。
5. 在 Issuance Criteria 选项卡上,单击 Next。
6. 在 Summary 选项卡上,单击 Save。
步骤 5:为 SCIM 创建 OAuth 客户端
OAuth 客户端是 PingFederate 向 ThingWorx 提供访问令牌的连接点。服务提供者使用这些访问令牌向 ThingWorx 请求受 OAuth 保护的资源。
1. 在 PingFederate 中,搜索 Clients 并打开搜索结果。单击 Add Client。
2. 为 CLIENT ID 和 NAME 提供唯一值。
3. 将 CLIENT AUTHENTICATION 设置为 CLIENT SECRET。
4. 对于 CLIENT SECRET,请选中 CHANGE SECRET 复选框,然后单击 Generate Secret。
请记下 CLIENT ID 和 CLIENT SECRET 的值以便在配置 sso-settings.json 文件中的 SCIMAccessTokenServicesSettings 部分时使用。
5. 在 REDIRECT URIS 字段中,输入 https://{THINGWORX HOST}:8443/Thingworx/SCIMProvider/SCIM,然后单击 Add。
6. 对于 ALLOWED GRANT TYPES,请选中 Client Credentials、Resource Owner Password Credentials 和 Access Token Validation (Client is a Resource Server) 复选框。
7. 将 DEFAULT ACCESS TOKEN MANAGER 设置为 Default。
8. 请确保按下图所示设置其余值:
9. 单击 Save。
步骤 6:在 platform-settings.json 文件中配置 SCIM
步骤 7:验证 SCIM 子系统是否正在运行
1. 启动 ThingWorx 服务器。
2. 在 ThingWorx Composer 中,单击 Browse 并选择 Subsystems。
3. 选择 SCIMSubsystem,然后验证其是否正在运行。
步骤 8:映射用户名和 USER_KEY
1. 在 PingFederate 中,搜索 Access Token Management。
2. 单击“创建新实例”。
3. 提供 INSTANCE NAME。
4. 对于 INSTANCE ID,请键入 default。
5. 将 TYPE 设置为 Internally Managed Reference Tokens,然后单击 Next。
6. 在 Instance Configuration 选项卡上,单击 Next。
7. 在 Session Validation 选项卡上,单击 Next。
8. 在 Access Token Attribute Contract 选项卡上,执行以下操作,然后单击 Next:
a. 在 Extend the Contract 下,为 Windchill 添加 Username,然后单击 Add。
b. 在 Extend the Contract 下,为 SCIM 添加 username,然后单击 Add。
9. 在 Resource URIs 选项卡上,单击 Next。
10. 在 Access Control 选项卡上,单击 Next。
11. 在 Summary 选项卡上,单击 Save。
12. 搜索 Access Token Mapping,然后单击 Add Mapping (添加至 Default 上下文)。
13. 单击 Next,直到来到 Contract Fulfillment 选项卡。
14. 在 Contract Fulfillment 选项卡上,对于 Username 和 username 合同,请执行以下操作:
▪ 将 Source 设置为 Persistent Grant。
▪ 将 Value 设置为 USER_KEY。
15. 在 Issuance Criteria 选项卡上,单击 Next。
16. 在 Summary 选项卡上,单击 Save。
步骤 9:为 SCIM 定义服务提供者连接
1. 在 PingFederate 中,搜索 SP CONNECTIONS 并创建新连接。
2. 在 Connection Template 选项卡上,选择 DO NOT USE A TEMPLATE FOR THIS CONNECTION,然后单击 Next。
3. 在 CONNECTION TYPE 选项卡上,执行以下操作,然后单击 Next:
a. 请确保 BROWSER SSO PROFILES 复选框处于未选中状态。
b. 选择 OUTBOUND PROVISIONING 复选框,并将 TYPE 设置为 SCIM 1.1 Service Provider。
4. 在 General Info 选项卡上,执行以下操作,然后单击 Next:
a. 指定 PARTNER’S ENTITY ID (CONNECTION ID) 和 CONNECTION NAME。例如:SCIM_ADFS_SP
b. 在 BASE URL 字段中,输入 https://ThingWorx_FQDN:8443/Thingworx/SCIMProvider。
| 在将 URL 复制到 PingFederate 时,请确保其末尾无空格。 |
5. 在 Outbound Provisioning 选项卡上,单击 Configure Provisioning。
6. 在 Custom SCIM Attributes 选项卡上,执行以下操作,然后单击 Next:
a. 在 USERS RESOURCE URL 字段中,输入 https://ThingWorx_FQDN:8443/Thingworx/SCIMProvider/SCIM/Users
| 在将 URL 复制到 PingFederate 时,请确保其末尾无空格。 |
b. 在 GROUPS RESOURCE URL 字段中,输入 https://ThingWorx_FQDN:8443/Thingworx/SCIMProvider/SCIM/Groups
| 在将 URL 复制到 PingFederate 时,请确保其末尾无空格。 |
c. 将 AUTHENTICATION METHOD 设置为 OAUTH 2.0 BEARER TOKEN。
d. 将 USER 指定为 Administrator,然后输入 PASSWORD。
e. 在 sso-settings.json 文件中指定 CLIENT ID 和 CLIENT SECRET 的值。
f. 在 TOKEN END POINT URL 中,输入 https://PingFederate Host:9031/as/token.oauth2
g. 请确保 SCIM SP SUPPORTS PATCH UPDATES 和 PROVISION GROUPS WITH DISTINGUISHED NAME 复选框处于未选中状态。
h. 将 DEPROVISION METHOD 设置为 DELETE USER。
7. 在 Custom SCIM Attributes 选项卡上,单击 Next。
步骤 10:为数据存储创建信道
1. 在 Manage Channels 选项卡上,单击 Create。
2. 提供 CHANNEL NAME。
3. 将 ACTIVE DATA STORE 选为于步骤 2 中创建的数据存储,即 LDAP_ADFS,然后单击 Next。
4. 在 Source Settings 选项卡上,单击 Next。
5. 在 Source Location 选项卡上,执行以下操作,然后单击 Next:
a. 在 BASE DN 字段中,输入 cn=users,dc=thingworx,dc=com
b. 在 Users 下的 FILTER 字段中,输入 (&(objectCategory=person)(objectClass=user)(cn=*))
c. 在 Groups 下的 FILTER 字段中,输入 (&(objectCategory=group))
6. 在 Attribute Mapping 选项卡上,单击 Next。
7. 在 Activation & Summary 选项卡上,将 Channel Status 设置为 ACTIVE,然后单击 Done。
8. 在 Manage Channels 选项卡上,单击 Done。
9. 在 Outbound Provisioning 选项卡上,单击 Next。
10. 确保 SP 连接处于活动状态 (绿色),然后单击 Save。
SP 连接随即列于 SP 连接页面上。
步骤 11:添加 LDAP 二进制属性
1. 转至 > > 。
2. 单击 LDAP_ADFS 数据存储,然后选择 LDAP Configuration 选项卡。
3. 单击 Advanced 以查看其他绑定设置和配置。
4. 单击 LDAP Binary Attributes 选项卡,然后添加值为 objectGUID 的新二进制属性。
5. 单击 Save。
第 11 部分:将 Windchill 配置为资源服务器
步骤 1:先决条件
◦ Windchill 已配置为 SSL/OAuth 2.0。
◦ ThingWorx 和 PingFederate SSL 证书已导入 Windchill 计算机上的 jssecacerts/cacerts 文件。
◦ Windchill SSL 证书已导入 ThingWorx 计算机上的 jssecacerts/cacerts 文件。
◦ Windchill SSL 证书已导入 PingFederate 计算机上的 jssecacerts/cacerts 文件。
步骤 2:完成 Windchill OAuth 2.0 文件配置
更新 <WC_install_root>\Windchill\codebase\WEB-INF\security\config 处提供的 securityContext.properties 文件:
◦ checkTokenEndpointUrl - PingFederate 计算机的 FQDN。
◦ clientId - OAuth 客户端 ID,例如 wnc-rp-client。
◦ clientSecret - OAuth 客户端密码。
◦ resourceScopes - Windchill 范围,例如 WINDCHILL_READ。
步骤 3:为作为资源服务器的 Windchill 创建 OAuth 客户端
| 可从 securityContext.properties 文件中检索 clientId 和 clientSecret 的值。 |
步骤 4:在 PingFederate 中创建 Windchill 范围
1. 在 PingFederate 中的 OAuth Settings 页面上,单击 Scope Management。
2. 在 Scope Value 下,单击 Add 以添加相同的范围,例如在 securityContext.properties 文件中为 resourceScopes 值添加的 WINDCHILL_READ。
3. 单击 Save。