gpt4 book ai didi

spring-security - 如何使用 Spring Security SAML 扩展对 SAML 请求/响应进行签名

转载 作者:行者123 更新时间:2023-12-05 02:22:50 25 4
gpt4 key购买 nike

我能够使用 Spring Security SAML 扩展让我的应用程序充当具有 IDP SSOCIRCLE 的 SP。我的客户有以下要求:

<强>1。对断言进行签名:从 IDP 发送的断言已签名并且工作正常。

<强>2。签署请求/响应: 当使用 SSO Circle 生成元数据文件时。我将选项 AuthnRequestsSigned 选择为 true。我将我的 SP 元数据上传到 SSO Circle IDP。 SP 元数据具有以下 true 值:AuthnRequestsSignedWantAssertionsSigned。运行应用程序时,我的请求和收到的响应都没有签名。

我在完成第二个要求时遇到了问题。我是 SAML 和一般安全性的新手。我在这里缺少什么?

更新

在考虑了 Vladimir 的评论之后。我将我的绑定(bind)更改为 HTTP-Post,所以现在我发送带有所示签名的 SAML 请求。通过执行以下操作,我能够发送使用我的私钥(不是示例项目提供的私钥)签名的请求:

  1. 使用 keygen 工具创建 keystore 、CSR 和公钥证书。
  2. 更新我的 SP 元数据文件中的数字签名部分以获得新证书
  3. 从 IDP SSOCIRCLE 中删除旧的 SP 元数据文件并添加新的 SP 元数据文件
  4. 更改 spring 配置,让 JKSKeyManager 使用我用新别名和密码创建的新 keystore 。

我现在需要做的是让 IDP(SSOCIRCLE) 将响应发送到哪里 一个。响应已签名 b.断言已签名

如何实现?鉴于响应的签名应该不同于断言的签名。 谢谢。

最佳答案

HTTP-Redirect 绑定(bind)要求在发送消息之前删除 SAML 消息本身存在的任何 ds:Signature 元素:

Any signature on the SAML protocol message, including the XML element itself, MUST be removed. Note that if the content of the message includes another signature, such as a signed SAML assertion, this embedded signature is not removed. However, the length of such a message after encoding essentially precludes using this mechanism. Thus SAML protocol messages that contain signed content SHOULD NOT be encoded using this mechanism. (saml2-bindings, 578-582, copy pasted from PDF)

同时 HTTP 重定向绑定(bind)要求将新的数字签名附加到 GET URL 作为参数 Signature

这意味着使用 HTTP 重定向您不能在消息级别发送带有签名的消息,而是将签名添加到 URL。因此,从 Spring SAML 发送到 IDP 的整个消息都已签名(从 SP 发送的数据中检查)。

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

关于spring-security - 如何使用 Spring Security SAML 扩展对 SAML 请求/响应进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27097273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com