【问题标题】:Is Response signature required in SAML Web SSO profile?SAML Web SSO 配置文件中是否需要响应签名?
【发布时间】:2020-01-20 15:07:28
【问题描述】:

上下文:我正在研究 SAML 服务提供者的实现。我们正在实现 SAML Web SSO 配置文件,其中包含用于生成 AuthnRequests 的 HTTP-Redirect 绑定和用于接受 SamlResponses 的 HTTP-Post 绑定(Dropbox for Business 等流行产品使用的典型设置)。我们的 SP 端点将可供网络上的任何人公开访问,我们的断言消费者服务 URL 是 HTTPS。

SAML 规范对在 SamlResponse 消息中签名断言非常清楚:这是强制性的。但是,SAML 规范并不清楚签署 SamlResponse 的封闭 Response 元素。它说它可以签名,并且签名必须在存在时进行验证。但是接下来还有这句话:

当包含断言的响应消息通过用户的网络传递给依赖方时 浏览器(例如使用 HTTP POST 绑定),那么为了确保消息完整性,它是 要求使用 XML 签名对响应消息进行数字签名

Spring Security SAML 库does NOT 要求存在此签名。 SSOCircle SAML 测试套件对于需要它的实现失败(SSOCircle 在“肯定”测试中使用没有它的 SamlResponses)。

那么,Web SSO 配置文件中是否需要它,为什么?

【问题讨论】:

    标签: saml saml-2.0 spring-saml


    【解决方案1】:

    查看此文档:http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf,第 68 页。上面写着A digital signature is not always required in SAML。但是,在 spring saml 中,您可以在 securityContext 中指定您想要签名的断言/响应。 https://docs.spring.io/spring-security-saml/docs/current/reference/html/configuration-metadata.html#configuration-metadata-sp-generation

    【讨论】:

    • 谢谢,我看过文档,但我觉得我缺乏安全专业知识来正确解释它。至于 Spring Security SAML,我找不到任何选项来指定我想要签名的响应(仅涵盖请求和断言)。我在问题中链接的代码表明没有这样的选项。虽然我自己知道如何实现它,但问题是——我应该这样做吗?
    • 除非你想添加额外的(也许是不必要的)保护层,我认为最好的选择是让 spring 来处理它。
    猜你喜欢
    • 2011-01-30
    • 2016-11-26
    • 2014-01-19
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2016-08-11
    相关资源
    最近更新 更多