【问题标题】:How to enforce Saml2AuthnResponse signature?如何强制执行 Saml2AuthnResponse 签名?
【发布时间】:2021-11-25 13:05:49
【问题描述】:

如果我的身份提供者向我发送了 Saml2AuthnResponse<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 元素中的签名无效,则 Unbind() 方法将引发 Invalid Signature 异常。这很好,符合预期。

但是,如果 <Signature> 元素完全丢失(Saml2AuthnResponse 未签名),我一点也不例外。这是预期的吗?这是安全风险吗?

断言是加密的,通信是通过 HTTPS 进行的。但我仍然有点担心签名对于Saml2AuthnResponse 是可选的。我可以强制/要求签名吗?

【问题讨论】:

    标签: .net-core saml-2.0 itfoxtec-identity-saml2


    【解决方案1】:

    如果您已从应用程序上传元数据,则应指定 WantAssertionsSigned="1"。但是,一般来说,您需要确保在身份提供者配置中选择了签名断言、签名响应或同时签名。

    在应用程序端,如果您能够指定需要对断言进行签名,则 SAML 库必须检查以确保存在签名。

    例如,ITfoxtec 似乎允许 WantAssertionsSigned 在元数据中,但(乍一看)在收到断言时不检查它。

    如果属实,那可能是一个错误

    【讨论】:

      【解决方案2】:

      始终需要 SAML 2.0 Authn 响应签名。

      如果使用 POST 绑定发送 SAML 2.0 Authn 响应,则 XML 签名会保护响应。

      请查看 XML 签名验证: https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2/blob/master/src/ITfoxtec.Identity.Saml2/Request/Saml2Request.cs#L228

      另一方面,如果 SAML 2.0 Authn 响应是使用重定向绑定发送的,则签名将放在查询字符串 (URL) 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多