是否建议签署和加密 SAML 并使用 SSL?
Posted
技术标签:
【中文标题】是否建议签署和加密 SAML 并使用 SSL?【英文标题】:Is it recommended to Sign and Encrypt SAML AND use SSL? 【发布时间】:2012-01-06 18:06:36 【问题描述】:如果我使用我的私钥对 SAML 请求进行签名并通过 SSL 发送,是否需要加密它?或者使用我的私钥对其进行签名、使用身份提供者公钥对其进行加密并通过 SSL 传输会更好吗?
【问题讨论】:
【参考方案1】:SAML 断言查询/请求通常不包含太多私有数据,而且请求本身通常不会持久化以供以后使用,因此几乎不需要对 SAML 请求本身进行加密。签署它将允许接收者验证内容在传输过程中没有被更改,并且通过 SSL 传输将在传输过程中提供隐私。在这种情况下加密请求可能是多余的。
然而,SAML 断言响应是完全不同的动物。包含声明或断言的 SAML 响应可能包含私有数据。根据这些断言在您的系统中的使用方式,断言可能会在不同方之间传递,其中一些具有解密内容所需的密钥(因为它们与 SAML 提供者具有信任关系),而另一些则没有. SAML 断言可以存储在缓存中或数据库中,因此您真的不知道将来谁会通过它们。
如果 SAML 响应包含包含私有数据的声明和断言,并且响应的接收者将无限期持有 SAML 断言或通过您不信任的中间方传递 SAML 断言,那么是的,无论是否通过 SSL 传输,都应加密 SAML 断言并对响应进行签名。加密是为了在数据到达 SSL 管道的另一端后保护数据的隐私。
【讨论】:
"加密是为了在数据到达 SSL 管道的另一端后保护数据的隐私。"这让我很清楚。谢谢!【参考方案2】:而且,SSL 管道的另一端是浏览器。从 IdP 到浏览器有一个管道,从浏览器到服务提供者有另一个管道。如果断言未加密,则任何人都可以在浏览器上使用断言。攻击者可以在对未来 SAML 文档和交互的某种攻击中使用未加密的名称标识符。
【讨论】:
以上是关于是否建议签署和加密 SAML 并使用 SSL?的主要内容,如果未能解决你的问题,请参考以下文章