建议在 SAML 中进行签名和加密并使用 SSL 吗?

22

如果我使用我的私钥签名并通过 SSL 发送 SAML 请求,是否有必要进行加密?或者使用我的私钥签名,使用身份提供者的公钥加密并通过 SSL 传输是否更好?

2个回答

54

一个 SAML 断言查询 / 请求通常不包含很多私人数据,请求本身通常不会被持久化以供以后使用,因此很少需要加密 SAML 请求本身。对其进行签名将允许接收方验证内容在传输中是否被更改,并通过 SSL 传输提供隐私保护。在这种情况下加密请求可能过度。

然而,SAML 断言响应是完全不同的情况。包含声明或断言的 SAML 响应可能包含私人数据。根据这些声明在您的系统中的使用方式,这些断言可能会在不同的方之间传递,其中一些方具有解密内容所需的密钥(因为他们与 SAML 提供者有信任关系),而另一些则没有。SAML 断言可以存储在缓存或数据库中,因此您真的不知道谁将来会查看它们。

如果 SAML 响应包含包含私人数据的声明和断言,并且响应的接收方将无限期地持有 SAML 断言或将 SAML 断言传递给您不信任的中间方,则无论是否通过 SSL 传输都应该加密 SAML 断言并对响应进行签名。加密是为了保护数据在到达 SSL 管道的另一端后的隐私。


5
加密是为了保护数据在SSL管道的另一端到达后的隐私。这让我很清楚。谢谢! - BernardMarx

3

另一端的SSL管道是浏览器。从IdP到浏览器有一条管道,从浏览器到服务提供商有另一条管道。如果Assertion没有加密,那么Assertion将对浏览器中的任何人都可用。攻击者可以利用未加密的名称标识符在未来的SAML文档和交互中进行某种攻击。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接