web-services - 为什么要使用 x.509 证书来加密 xml?为什么不直接通过 https 传输?

标签 web-services security encryption cryptography x509

对加密了解不多...

假设我正在准备提交给身份提供商的 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/

相关文章:

java - 是否有用于计算穆斯林祈祷时间的 Java 库?

asp.net-mvc-3 - 防止篡改 ASP.NET MVC EF 中的表单字段

security - tomcat 漏洞 : JSP Upload Bypass CVE-2017-12617 的有效利用

Java Play 加密数据库密码

javascript - 使用 Web API 时,jQuery $.ajax() 方法未正确设置 contentType

c# - 具有相似签名的多个网络方法

java - 如何限制对 wsdl 以外的所有内容的访问?

node.js - 服务器日志中对第三方网站的请求

java - 如何使用 JNDI 和 Digest-MD5 向 LDAP 进行身份验证

javascript - JavaScript 流密码的实现?