是否建议对SAML进行签名和加密并使用SSL ?



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

SAML断言查询/请求通常不包含太多私有数据,并且请求本身通常不会持久化以供以后使用,因此几乎不需要对SAML请求本身进行加密。对其签名将允许接收方验证内容在传输过程中未被更改,并且通过SSL传输它将在传输过程中提供隐私。在这种情况下对请求进行加密可能是多余的。

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

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

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

最新更新