我是否应该要求 IdP 签署 SAML2 SSO 响应?

问题描述 投票:0回答:3

我们的应用程序具有与 3 个不同 (Shibboleth) IdP 的 SAML2 SSO 集成。我们正在尝试添加第四个(也是 Shibboleth),但遇到了一些问题,因为我们的应用程序期望所有 SSO 响应都经过验证签名。其他 3 个正在签署他们的响应,但第 4 个没有,并且犹豫是否添加自定义配置来强制对我们的应用程序进行签名。

从技术上讲,我可以修改我们的应用程序以接受未签名的 SSO 响应,但我想知道我是否应该这样做。允许未签名的 SSO 响应有哪些陷阱?是否存在安全漏洞?

是否有任何 Shibboleth(或其他 SAML2 SSO)文档建议将签名响应作为最佳实践?

single-sign-on signing saml-2.0 shibboleth service-provider
3个回答
12
投票

遵循 SAML 2.0 规范对 IdP 的唯一要求是对断言进行数字签名(请参阅 http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf - 第 4.1.3.5 节)。这足以判断来自 IdP 的 SSO 操作是否应该受到与其联合的 SP 的信任。

签署外部响应是可选的。它有一些安全优势,例如防止消息插入或修改(请参阅 http://docs.oasis-open.org/security/saml/v2.0/saml-sec 中的第 6.1.3/6.1.5 节) -consider-2.0-os.pdf) - 但在实践中,它经常被省略以代替依赖 SSL/TLS。


3
投票

签署响应的全部目的是证明它们确实来自发行人。否则,“中间人”可能会更改属性,例如让自己能够访问应用程序。

默认情况下,使用 SAML 的 ADFS v2.0 对所有响应令牌进行签名。没有办法将其关闭。


0
投票

为了将这两个答案联系起来,因为这两个答案今天对我都很有用,这里有一个很好的解释,说明为什么两个答案都可以签名,实际上为什么用于签名每个答案的证书可能不同:

https://security.stackexchange.com/a/264750

© www.soinside.com 2019 - 2024. All rights reserved.