1

我能够使我的应用程序充当SP,IDP SSOCIRCLE使用Spring Security SAML扩展名。我的客户有以下要求:如何使用Spring Security SAML扩展名签署SAML请求/响应

1.断言签署:从IDP发送的断言已签署,它工作正常。

2.请求/响应签名:使用SSO Circle生成元数据文件时。我选择了选项AuthnRequestsSignedtrue。我将我的SP元数据上传到SSO Circle IDP。 SP元数据的值如下:trueAuthnRequestsSigned & WantAssertionsSigned。运行应用程序时,我的请求和我得到的响应都没有签名。

我有问题要完成第二项要求。我是SAML和安全的新手。我在这里错过了什么?

UPDATE

考虑到普京的言论之后。我将绑定更改为HTTP-Post,因此现在我正在发送带有所示签名的SAML请求。

  1. 创建一个密钥,CSR,并使用凯基工具的公钥证书: 我能够发送请求使用通过执行以下操作我的私有密钥(不被样品项目中提供的一个)签署。
  2. 更新我的SP元数据文件中的数字签名部分有新的证书
  3. 取下IDP SSOCIRCLE旧SP元数据文件,并添加新的SP元数据文件
  4. 更改春天配置有JKSKeyManager使用我用新的别名和密码创建的新密钥库。

我现在需要做的是让IDP(SSOCIRCLE)发送响应,其中 a。答案是 b。断言有标记

这怎么能实现?考虑到 响应的签名应该与断言的签名不同,我需要做些什么处理才能解决该问题。 谢谢。

+0

您使用的是什么绑定? – 2014-11-24 12:07:21

+0

HTTP重定向绑定发送请求和HTTP POST绑定的响应。 – 2014-11-24 15:19:02

回答

3

HTTP重定向结合需要,存在于SAML消息本身任何ds:Signature元件在发送所述消息之前被除去:

在SAML协议消息的任何签名,包括XML 元件本身,必须是除去。请注意,如果消息 的内容包含另一个签名(如签名的SAML断言),则不会删除此嵌入式签名。然而,编码之后的这种消息的长度基本上排除了使用这种机制。因此, 包含签名内容的SAML协议消息不应使用此机制编码为 。 (SAML2-绑定,578-582,从复制粘贴PDF)

同时HTTP重定向的结合需要一个新的数字签名被附加到GET URL作为参数Signature

这意味着使用HTTP-Redirect,您不能在消息级别上使用Signature发送消息,而是将签名添加到URL中。因此,从Spring SAML发送给IDP的整个消息都被签名(从SP发送的数据中检查它)。

除了在断言中包含签名之外,没有标准方法可以强制IDP发送在消息级别上签名的响应消息。如果您使用SSL/TLS,则传输层会提供消息的真实性和不可否认性(数字签名的特征)。