单一登录故障排除
启用事件日志记录,以解决 SSO 相关问题。要启用日志记录,请使用 ThingworxPlatform 目录中的标准 logback.xml 文件。如果此位置已存在 logback.xml 文件,则只需将 SSO 记录器添加到现有记录器集即可。有关 logback.xml 文件的详细信息,请参阅 配置日志记录
Logback.xml 功能为 Java 标准。有关配置这些文件的说明,请参阅 Java 文档。
下表提供了有关可添加的记录器包的信息,以帮助您调查与 ThingWorx 的 SSO 配置相关的问题。
说明
com.thingworx.security.authentication.sso
包内含有所有 ThingWorx SSO 身份验证组件。以下示例为记录器包中的条目:
对于转到应用程序日志的消息,例如:
LogUtilities.getInstance().getApplicationLogger([class name]):
<logger name="com.thingworx.security.authentication.sso" level="DEBUG"/>
此包中的许多类都应用了这些安全记录器。例如:
LogUtilities.getInstance().getSecurityLogger(ThingworxSSOAuthenticator.class);
要打开这些记录器,可添加 SecurityLog 作为根父记录器:
<logger name="SecurityLog.com.thingworx.security.authentication.sso" level="DEBUG"/>
SecurityLog.com.thingworx.security.sso
在获取访问令牌及其配置情况时,集成连接器所使用的委托授权工作流的包。
com.thingworx.ptc.eauth.identity
包内含有所有 PTC 核心 SSO 库组件。
com.springframework.security
包内含有所有 Spring Framework 安全组件。
com.springframework.jdbc
包内含有所有 Spring Framework JDBC 身份验证组件。
如果在执行 SSO 过程中出现错误,则可调查以下故障排除项目。
问题
ThingWorx 管理员无法登录 - 收到范围无效的错误
说明
登录后,用户将被重新定向到 ThingWorx 错误页面,该页面指出系统当前出现认证配置错误。
解决方案
ThingWorx 集成连接器或媒体实体中注册的一个或多个范围与在 PingFederate (或您选择的 CAS) 中注册的范围不匹配。此类 PingFederate 之间的范围不匹配现象可能导致 ThingWorx 管理员被锁定。可在安全日志中查看已在 ThingWorx 中注册的资源提供者范围。要解决此问题:
1. 请登录到 PingFederate 并将 ThingWorx 安全日志中报告的范围与在 PingFederate 中注册的范围进行比较。对于 ThingWorx 中所有未在 PingFederate 中注册或名称不匹配的范围,可在 PingFederate 中添加范围或修改名称,以与 ThingWorx 中的拼写相匹配 (无论范围的拼写是否正确)。
2. 现在,授权批准页面正常工作,您可以管理员的身份登录到 ThingWorx。在 ThingWorx Composer 中,导航到尝试使用范围的集成连接器或媒体实体。将其从集成连接器或媒体实体的范围注册表中移除。使用 ThingWorx 的新会话进行登录以验证登录是否成功。
3. ThingWorx 尝试使用未在 PingFederate 中注册的范围时,可从范围管理页面中删除多余的范围。如果范围名称不匹配,请删除该范围,然后使用正确的拼写在 PingFederate 中以及 ThingWorx 集成连接器或媒体实体中再次对其进行注册。
问题
集成连接器或媒体实体上的服务不起作用 - 检索访问令牌失败。
说明
您已登录到 ThingWorx Composer 并获得了访问令牌。您导入或创建了一个具有范围的连接器,并尝试针对该连接器执行服务,但未能成功。
解决方案
退出并重新登录以打开连接器范围的授权批准页面。您需要批准新注册的范围授权才能使用这些服务。
如果您正在导入或创建包含范围的媒体实体,也需要做同样的处理。
问题
ThingWorx 启动时出现的 SSO 上下文和 Bean 初始化错误。
说明
ThingWorx 无法启动。
解决方案
请参阅错误日志以确定问题。上下文末端的文本、bean 初始化警告或错误日志将描述此问题。例如,错误可能是:
SSOConfigurationException: BasicSettings > idpMetadataFilePath cannot be null or empty
检查 sso-settings.json 文件中 idpMetadataFilePath 参数的值,并添加适当的值。
问题
用户在 PingFederate 的 Request Grant Approval 页面上针对所请求的范围单击 Don’t allow 后,ThingWorx 混搭或应用程序无法加载。
说明
Request Grant Approval 页面上单击 Don’t allow 后,混搭无法加载,且浏览器 URL 以哈希符号 "#" 和句号 "." 结尾。
解决方案
默认情况下,PingFederate 会使用句点 "." 作为片段占位符,这便会导致出现此类问题。要解决此问题,请执行以下步骤:
1. 在 PingFederate 安装位置中,导航到 <PingFederateInstallation>\server\default\data\config-store\sanitize-fragments.xml
2. 编辑此 XML 文件并从片段占位符中删除句点 "."。该行应如下所示:<con:item name="FragmentPlaceholder"></con:item>
3. 重新启动 PingFederate 服务器。
问题
成功登录后,从 http://<your server>:<port>/Thingworx/runtime/index.html#mashup=<MyMashup> 重新定向到 http://<your server>:<port>/Thingworx/runtime/index.html 以进行 SAML 身份验证。
说明
在登录混搭 URL 期间,URL 的片段部分 (即 #mashup=<我的混搭>) 不会发送到 ThingWorx 服务器或身份验证服务器,以便在成功登录后进行正确的重定向,原因在于浏览器会保留该数据以仅供客户端使用。因此,ThingWorx 服务器和身份验证服务器会收到不带片段的 URL,即 http://<您的服务器>:<端口>/Thingworx/runtime/index.html
解决方案
对于用作初始身份验证点的混搭 URL,请使用查询参数而不是片段参数构建 URL。
因此,在这种情况下,请使用此URL: http://<your server>:<port>/Thingworx/runtime/index.html?mashup=<MyMashup>