我使用Spring Security的SAML有我的应用程序的行为作为一个SP。 我能有终端到终端的解决方案来完成。 然而,当用户想要访问使用多个URL的应用,我面临的一个问题。 我曾与断言使用者服务URL配置我的SP元数据是mywebsite:8080 / MyApp的/ SAML / SSO。
用户还可以通过完整的域名mywebsite.fulldomainname访问应用程序:8080 / MyApp的/
如果用户访问第二URL,该SP应用重定向到IDP将返回其将失败给这个消息中的第一URL: 响应的InResponseToField并不对应于发送消息
即使我用EmptyStorageFactory,它仍然会失败在AbstractProfileBase.verifyEndpoint
我该如何解决呢?
在SAML的安全模型的一部分是预期端点验证 - 哪里IDP想传递一个SAML消息 - 和端点,其中SP实际收到的消息 - 这两个需要匹配。 因此,你的SP元数据需要包括什么地方,预计SAML邮件传递的URL正确的信息。 你可能会遇到错误verifyEndpoint
的情况下,SP的元数据有不同的URL不是在您的IDP传递邮件。
春天SAML允许您定义多个不同的元数据(使用不同的网址)为同一部署。 所以,你可以通过生成一个元数据解决您的问题mywebsite:8080/myapp
,其他为mywebsite.fulldomainname:8080/myapp/
和进口都对您的配置。 每个那些必须有不同的ENTITYID,也将需要单独导入到您的IDP。
你可以找到更多的细节春SAML手册的7.2章-预配置的元数据 。
文章来源: SP can be accessed by a number of URLs, how to have all the URLs work with an IDP