我已经实现了对SAML SSO的支持,以使我的应用程序充当使用Spring Security SAML Extension的服务提供者.我能够将我的SP与不同的国内流离失所者整合在一起.例如,我有HostA,HostB和HostC,所有这些都有我的应用程序的不同实例.我为每个主机指定了一个SP元数据文件,并使用该主机的URL设置AssertionConsumerServiceURL(EX:https:HostA.com/myapp/saml/sso).我将每个元数据文件添加到IDP并测试了所有这些文件并且工作正常.
但是,我的项目还通过配置IBM HTTP Server以实现负载平衡来支持高可用性.因此,在这种情况下,HTTP Server将主机(A,B,C)配置为用于负载平衡的主机,用户将使用HTTP服务器的URL访问我的应用程序:https:httpserver.com/myapp/
如果我定义了一个SP元数据文件并且具有在AssertionConsumerServiceURL(https://httpserver.com/saml/sso )中指定的HTTP Server的URL 并将我的实现更改为接受针对我的HTTP Server的断言,那么结果会是什么这种情况:
- 用户访问将用户分派给HostA的HTTPServer(幕后)
- HostA中的我的SP应用程序向IDP发送请求以进行身份验证.
- IDP将响应发送回我的httpserver:https: //httpserver.com/saml/sso .
HTTP服务器是否会重定向到HostA,如下所示:https: //HostA.com/saml/sso
谢谢.
我能够使用 Spring Security SAML 扩展让我的应用程序充当具有IDP SSOCIRCLE的 SP。我的客户有以下要求:
1. 对断言进行签名:从 IDP 发送的断言已签名并且工作正常。
2. 对请求/响应进行签名:使用 SSO Circle 生成元数据文件时。我选择将AuthnRequestsSigned选项设置为true。我将 SP 元数据上传到 SSO Circle IDP。SP 元数据具有以下true值:AuthnRequestsSigned和 WantAssertionsSigned。运行应用程序时,我的请求和收到的响应都没有签名。
我在完成第二个要求时遇到问题。我对 SAML 和一般安全性还不熟悉。我在这里缺少什么?
更新
在考虑了弗拉基米尔的意见后。我将绑定更改为 HTTP-Post,因此现在我正在发送带有所示签名的 SAML 请求。我能够通过执行以下操作来发送使用我的私钥(不是示例项目提供的私钥)签名的请求:
我现在需要做的是让 IDP(SSOCIRCLE) 将响应发送到 a. 响应已签名 B. 断言已签署
如何才能做到这一点?鉴于响应的签名应该与断言的签名不同,我需要做哪些更改来处理这个问题。谢谢。
spring-security x509certificate saml-2.0 xml-signature spring-saml