对加密了解不多...
假设我正在准备提交给身份提供商的 SAML 请求。为什么我需要为此请求应用 x.509 证书?仅通过 SSL 传输是否不够安全?
最佳答案
在 SAML 的情况下,消息级安全(即 XML 本身已签名,有时是加密的),因为通信涉及不直接通信的各方。 SSL/TLS 用于传输级安全,仅在直接通信的双方之间使用,并且仅在通信期间使用。
根据您使用的 SAML 绑定(bind),对话框可能如下所示(例如 Shibboleth 行):
- 用户的浏览器连接到服务提供商 (SP)
- SP 向用户提供 SAML 请求,不一定可见,但隐藏在表单或等效项中。
- 用户的浏览器(直接连接到 IdP)将 SAML 请求发送到 IdP。
- 用户通过它进行身份验证并获得 SAML 响应。
- 用户的浏览器将该 SAML 响应发送给 SP。
在这种情况下,SP 和 IdP 之间没有直接的 SSL/TLS 连接,尽管涉及所有 3 方。 (此问题的一些变体涉及 SP 和 IdP 之间针对属性的后端通信,但这是一个不同的问题。)
- SSL/TLS 连接不足以让 IdP 知道 SAML 请求来自允许其验证和释放属性的 SP,因为与 IdP 的连接来自用户的浏览器,而不是SP本身。为此,SP 必须在将 SAML 请求消息交给用户浏览器之前对其进行签名。
- SSL/TLS 连接不足以让 SP 知道 SAML 响应来自它信任的 IdP。同样,这就是 SAML 响应本身也被签名的原因。
如果中间方(即用户)不打算查看 SAML 消息中的内容和/或用户与 SP 或 IdP 之间的连接尚未结束,则适用于签名的内容也适用于加密SSL/TLS(通常,它应该通过 HTTPS)。
关于web-services - 为什么要使用 x.509 证书来加密 xml?为什么不直接通过 https 传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589471/