配置 sso-settings.json 文件
* 
如果已在配置为 SSO 的 ThingWorx Foundation 实例上安装 ,则必须先停止所有 ThingWorx Foundation 和 服务 (包括 RabbitMQ 和 Nginx),然后再配置 sso-settings.json 文件。配置此文件后,必须先重新启动 RabbitMQ,然后再重新启动所有 ThingWorx Foundation 和 服务,包括 Nginx。
ssoSecurityConfig 目录中创建 sso settings.json 文件。
如果您的环境需要使用不同的路径,可以设置 THINGWORX_SSO_SETTINGS 环境变量的值,将 sso-settings.json 文件保存到不同的位置。
以下是 sso-settings.json 文件的示例结构:
{
"BasicSettings": {
"clientBaseUrl": "请参阅下表中的信息",
"idpMetadataFilePath": "请参阅下表中的信息",
"metadataEntityId": "请参阅下表中的信息",
"metadataEntityBaseUrl": "请参阅下表中的信息",
"webSSOProfileConsumerResponseSkew": "请参阅下表中的信息",
"webSSOProfileConsumerReleaseDOM": "请参阅下表中的信息",
"webSSOProfileResponseSkew": "请参阅下表中的信息",
"retriggerOnScopesRemoval": "请参阅下表中的信息",
"samlAssertionUserNameAttributeName": "请参阅下表中的信息",
"samlAssertionMaxAuthenticationAge": "请参阅下表中的信息",
"authnContextAsPassword": "请参阅下表中的信息"
},
"AccessTokenPersistenceSettings": {
"dbType": "请参阅下表中的信息",
"driverClassName": "请参阅下表中的信息",
"url": "请参阅下表中的信息",
"username": "请参阅下表中的信息",
"password": "请参阅下表中的信息",
"encryptTokenInDatabase": "请参阅下表中的信息",
"keyczarKeyFolderPath": "请参阅下表中的信息"
},
"KeyManagerSettings": {
"keyStoreFilePath": "请参阅下表中的信息",
"keyStoreStorePass": "请参阅下表中的信息",
"keyStoreKey": "请参阅下表中的信息",
"keyStoreKeyPass": "请参阅下表中的信息"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "请参阅下表中的信息",
"clientSecret": "请参阅下表中的信息",
"authorizeUri": "请参阅下表中的信息",
"tokenUri": "请参阅下表中的信息",
"clientAuthScheme": "请参阅下表中的信息"
},
"<AuthorizationServerId2>": {
"clientId": "请参阅下表中的信息",
"clientSecret": "请参阅下表中的信息",
"authorizeUri": "请参阅下表中的信息",
"tokenUri": "请参阅下表中的信息",
"clientAuthScheme": "请参阅下表中的信息"
}
}
}
}
* 
务必按照要求对每个参数的值进行编辑。您的实施可能会有所不同,具体取决于多个因素,例如 ThingWorx 的托管位置、您组织的安全策略以及联合的 CAS。根据下表中的信息来设置不同参数的值。
以下表格描述了 sso-settings.json 文件 BasicSettings 部分的不同参数和默认值:
参数
说明
clientBaseUrl
指定 ThingWorx 服务器实例的 URL。
将其设置为 ThingWorx 服务器的完全限定域名。
如果已安装 ,则请指定 NGINX URL。
http://<主机名>:<port-number>/Thingworx
https://<ThingWorx Flow Nginx 主机名>:<ThingWorx Flow Nginx 端口号>/Thingworx
idpMetadataFilePath
指定 IdP 元数据文件的绝对文件路径位置。
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
指定服务提供者连接的实体 ID。
这是您在 PingFederate 中配置服务提供工具连接时所选择的唯一 ID。
metadataEntityBaseUrl
指定 ThingWorx 服务器的完全限定域名。此值与 ThingWorx 浏览器 URL 相同。
如果已安装 ,则请指定 NGINX URL。
* 
建议不要使用非完全限定的域名。如果您的组织选择使用非完全限定的域名,则您的 IT 部门必须确保该域名可由客户端计算机访问,且在 ThingWorx SSO 配置文件中对该域名进行了正确的配置。
http://<主机名>:<port-number>/Thingworx
https://<ThingWorx Flow Nginx 主机名>:<ThingWorx Flow Nginx 端口号>/Thingworx
webSSOProfileConsumerResponseSkew
指定 SAML 2.0 WebSSO Assertion Consumer 响应偏差容限。
设置此值时,请考虑您自己的安全需求以及企业网络中的延迟情况。
使用此设置可确定从 CAS 返回到 ThingWorx 的登录请求响应所允许的时间 (以秒为单位)。如果登录请求响应比此置花费的时间更长,则登录将失败。
偏差容限是接收人所允许的响应有效性偏差范围,造成偏差的原因是各系统时钟之间可能存在的差异。最好确保所涉及的每个系统时钟均能正确同步以最大限度地减小偏差影响。
300
webSSOProfileConsumerReleaseDOM
确定安全框架在身份验证完成后是否保留 SAML 断言。
如果设置为 false,则在身份验证完成后会保持 SAML 断言。
true
webSSOProfileResponseSkew
指定 SAML 2.0 Web SSO 配置文件响应偏差容限。
设置此值时,请考虑您自己的安全需求以及企业网络中的延迟情况。
偏差容限是接收人所允许的响应有效性偏差范围,造成偏差的原因是各系统时钟之间可能存在的差异。最好确保所涉及的每个系统时钟均能正确同步以最大限度地减小偏差影响。
300
retriggerOnScopesRemoval
指定所需范围的列表是否已更改且必须刷新。
如果将值设置为 true,则表示已从所需范围的列表中添加或移除范围。
如果将值设置为 false,则表示范围已添加到所需范围的列表中。
true
samlAssertionUserNameAttributeName
指定 ThingWorx 用户登录时哪个 SAML 属性具有存储用户名的值。确保标识提供工具中该属性的值与您使用的 ThingWorx 用户名的值一致。
* 
对于 ThingWorx 管理员帐户,用户名的值必须设置为“管理员”。请确保您配置 IdP 以为管理员帐户返回“管理员”值。有关详细信息,请参阅 在标识提供工具中创建 ThingWorx 管理员别名
uid
samlAssertionMaxAuthenticationAge
指定过期之前 SAML 2.0 断言的最大时长 (以秒为单位)。这也指定了身份验证断言的最长会话时间。
该值在设置后应与标识提供工具中所指定的会话超时值相匹配。
7200 seconds
authnContextAsPassword
可选。在少数情况下,IdP 会要求您将下一个声明放入 SAML 请求中。
<saml2p:RequestedAuthnContext Comparison="exact">
<saml2:AuthnContextClassRef xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
</saml2p:RequestedAuthnContext>
在上述情况下,应定义此属性。
true
* 
如果您想要在启用 SSO 的情况下启用应用程序密钥身份验证器,则必须将以下 ApplicationKeySettings 配置部分添加到 BasicSettings 下的 sso-settings.json 设置中。只有当您想要通过 REST API 请求使用 应用程序密钥进行身份验证时,才需要执行此操作。无论该设置处于启用还是禁用状态,均可以通过 WebSocket 从 Edge 设备使用应用程序密钥。
{
"BasicSettings": {
...
},
"ApplicationKeySettings": {
"enabled": true
},
...
}
以下表格描述了 sso-settings.json 文件 AccessTokenPersistenceSettings 部分的不同参数和默认值:
参数
说明
dbType
指定配置并用于 ThingWorx 安装的数据库类型。
要使用在 platform-settings.json 文件中设置的相同数据库,请指定在 platform-settings.json 中设置的相同数据库类型和凭据。
要将专用数据库用于授权令牌,请指定“默认”值。配置为“默认”后,即会创建新的专用 H2 数据库。
默认
* 
此“默认”数据库类型为 SSO 设置的默认选项。
H2
postgres
mssql
hana
driverClassName
指定您在 platform-settings.json 文件中使用的驱动类名称。
对于设置为 defaultdbType,可设置为 org.h2.Driver
对于设置为 h2dbType,可设置为 org.h2.Driver
对于设置为 postgresdbType,可设置为 org.postgresql.Driver
对于设置为 mssqldbType,可设置为 com.microsoft.sqlserver.jdbc.SQLServerDriver
对于设置为 hanadbType,可设置为 com.sap.db.jdbc.Driver
url
指定您安装 ThingWorx 的数据库位置的 URL。
对于设置为 defaultdbType,可设置为 jdbc:h2:\\<驱动器>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-oauth2-client-db
对于设置为 h2dbType,无需设置此参数。
对于设置为 postgresdbType,可设置为 jdbc:postgresql://<主机名>:<端口>/thingworx
对于设置为 mssqldbType,可设置为 jdbc:sqlserver://<主机名>:<端口>;databaseName=thingworx;applicationName=Thingworx
对于设置为 hanadbType,可设置为 jdbc:sap://<IP 地址>:39041/?databaseName=thingworx&currentschema=TWADMIN
username
指定您的系统用于存储访问令牌的数据库用户名。此用户名应该与您在 platform-settings.json 文件中指定的用户名相匹配。
* 
ThingWorx 中启用 SSO 时,H2 数据库需要用密码进行保护。有关详细信息,请参阅 ThingWorx 启用 SSO 时用密码对 H2 数据库进行保护
password
指定您的系统用于存储访问令牌的数据库密码。此密码应该与您在 platform-settings.json 文件中指定的密码相匹配。
* 
ThingWorx 中启用 SSO 时,H2 数据库需要用密码进行保护。有关详细信息,请参阅 ThingWorx 启用 SSO 时用密码对 H2 数据库进行保护
encryptTokenInDatabase
设置为 true 以在将访问令牌持久保留在数据库之前对其进行加密。
true
keyczarKeyFolderPath
如果将 encryptTokenInDatabase 参数值设置为 true,则该路径必须指向有效的 keyCzarKey 位置。修改此路径以使用您的 ThingworxPlatform\ssoSecurityConfig\symmetric 文件夹所在的目录。
* 
强烈建议密钥库密钥文件夹与 sso-settings.json 文件采用不同的存储位置。这样,您就可以对这些文件应用更为细化的文件系统访问控制。ThingWorx 的常规设置应该存储在与密钥库密钥文件夹和 sso-settings.json 文件不同的位置。
对于 Windows:<drive>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
其中 <驱动器> 指定安装有 ThingWorx 的驱动器。
对于 Linux:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
根据 dbType 的值,OAuth 2.0 访问令牌 (授权批准) 存储在不同的位置。下表提供了有关授权批准在数据库中的存储位置的信息:
dbType
数据库中用于存储授权批准的位置
default
按照 url 参数路径的指定创建子集 H2 数据库。默认情况下,数据库位于 Tomcat 目录的相对目录中。
如果将 dbType 设置为 default,建议您指定 JDBC URL 的完全限定路径,而不只是相对路径。
例如:jdbc:h2:./ThingworxPlatform/ssoSecurityConfig/sso-oauth2-client-db
H2
ThingworxStorage/database H2 数据库文件中的 H2 ThingWorx war 文件。
postgres
ThingWorx PostgreSQL 数据库中的 Oauth_client_token 表中。
mssql
ThingWorx MS SQL 数据库中的 Oauth_client_token 表中。
hana
ThingWorx SAP HANA 数据库中的 Oauth_client_token 表中。
以下表格描述了 sso-settings.json 文件 KeyManagerSettings 部分的不同参数和默认值:
参数
说明
keyStoreFilePath
指定密钥库的绝对文件路径位置。根据您的环境,修改路径以使用保存密钥库文件的目录。
* 
强烈建议密钥库密钥文件夹与 sso-settings.json 文件采用不同的存储位置。这样,您就可以对这些文件应用更为细化的文件系统访问控制。ThingWorx 的常规设置应该存储在与密钥库密钥文件夹和 sso-settings.json 文件不同的位置。
对于 Windows:<驱动器>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
其中 <驱动器> 指定安装有 ThingWorx 的驱动器。
对于 Linux:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
keyStoreStorePass
指定密钥库密码。
keyStoreKey
指定默认密钥。
keyStoreKeyPass
指定用于访问私人密钥的密码。
以下表格描述了 sso-settings.json 文件 AuthorizationServersSettings 部分的不同参数和默认值:
* 
AuthorizationServersSettings 设置可包含不止一个身份验证服务器的信息。每个服务器在 sso settings.json 文件中采用唯一标识符进行标识。
参数
说明
<AuthorizationServerId1>.clientId
指定从身份验证服务器获取访问令牌时使用的客户端标识符。
* 
为变量 AuthorizationServerId1 赋值。变量 AuthorizationServerId1 的这一值用于配置 Integration 连接器或媒体实体的连接设置。如果配置连接器设置的管理员或开发人员无权访问 ssoSecurityConfig 目录,则需要将这些信息提供给他们。
<AuthorizationServerId1>.clientSecret
指定用于通过身份验证服务器进行身份验证的客户端凭据。
设置为网络上的完全限定域名服务器 URL。
<AuthorizationServerId1>.authorizeUri
指定授权访问令牌时作为用户重定向目标的 URI
https://<PingFederate-host-name>:<PingFederate-Port-Number>/as/authorization.oauth2
* 
使用随 PingFederate 安装一起提供的 PingFederate 运行时端口。
<AuthorizationServerId1>.tokenUri
指定用于获取 OAuth2 访问令牌的 URI
设置为网络上的完全限定域名服务器 URL。
https://<PingFederate-host-name>:<PingFederate-Port-Number>/as/token.oauth2
* 
使用随 PingFederate 安装一起提供的 PingFederate 运行时端口。
<AuthorizationServerId1>.clientAuthScheme
指定用于验证客户端的方案。允许的值包括:
form
header
查询
form