13.Spring Security SAML 排除常见问题

13.排除常见问题

时间同步

SAML消息和断言的处理通常限于特定时间窗口,例如防止重放攻击的可能性。当IDP和SP机器的内部时钟不同步时,消息验证可能会失败。确保在联合中的所有系统上使用 时间同步服务

在SSO期间,错误“InResponseToField与发送的消息不对应”

确保应用程序在发送请求和接收响应期间使用相同的HttpSession。通常,当从localhost地址或http方案初始化身份验证请求时会出现此问题,而在公共主机名或https方案中收到响应。例如,在从URL  https://host:port/app/saml/login初始化身份验证时,必须通过https://host;port/app/saml/SSO

,而不是 http://host:port/app/saml/SSO或https://localhost:port/app/saml/SSO。

可以通过重新配置上下文提供程序来禁用对InResponseToField的检查,如下所示:

<bean id="contextProvider" class="org.springframework.security.saml.context.SAMLContextProviderImpl">
  <property name="storageFactory">
    <bean class="org.springframework.security.saml.storage.EmptyStorageFactory"/>
  </property>
</bean>

当面向公众的URL不同时,系统将重定向到例如localhost地址

如果您使用自动元数据生成,请确保将bean MetadataGenerator上的属性entityBaseURL设置为例如http://server:port/yourapp或使用预生成的元数据

在解密或加密字段期间系统失败,例如“无法解密加密数据”

确保在JDK中正确安装了Unlimited Strength Jurisdiction Policy Files。有关详细信息请参见第4.1节“先决条件”

验证证书时我的系统失败,错误类似于“PKIX路径构建失败”

这通常是由证书配置错误引起的。您的元数据或keyStore不包含正确的叶证书或CA证书,或者您的证书无效。您可以通过使用标志-Djavax.net.debug = all启动应用程序来获取其他信息。


(1)