1

对加密不太了解...

假设我正在准备提交给身份提供者的 SAML 请求。为什么我需要为此请求应用 x.509 证书?仅通过 SSL 传输是否不够安全?

4

5 回答 5

7

在 SAML 的情况下,消息级别的安全性(即 XML 本身是经过签名的,有时是加密的),因为通信涉及不直接通信的各方。SSL/TLS 用于传输级别的安全性,仅在直接通信的两方之间使用,并且仅在此通信期间使用。

根据您使用的 SAML 绑定,对话框可能如下所示(例如,沿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)。

于 2012-01-14T00:42:36.567 回答
6

是的 - SSL 就足够了 - 但 SSL 只是点对点的。如果源计算机和目标计算机之间存在一些中介,则无法使用 SSL 保护连接。

在这种情况下,例如通过 Internet 传输时,您必须保护实际消息,而不是传输级别。这就是您需要加密 XML(或至少部分)的原因。

马克

于 2009-06-05T05:04:48.527 回答
4

HTTPS 所做的只是加密两点之间的通信并防止窃听者——它不会确认发送消息的是谁。如果您的消息随后被转发,它也不会确保安全通信。

如果您使用 X.509 证书签署您的请求,则可以确保解密器拥有证书中包含的共享密钥。换句话说,您可以确保消息只能由您希望解密的组织解密。

在您的情况下,X.509 加密要求意味着您应该确信身份提供者是唯一会收到您的请求的组织。

一个有用的维基百科入门在这里

于 2009-06-05T05:35:56.507 回答
0

很可能是因为他们想要对您(客户端)进行身份验证。 HTTPS可用于客户端身份验证,但在实践中很少使用。

于 2009-06-05T05:05:31.227 回答
0

在实践中,您可以使用 HTTPS (SSL/TLS) 来保护您的 SAML 消息。但是您可能希望使用双向 SSL 证书验证/验证,这意味着您的客户端需要验证服务器的 X.509 证书,并且服务器需要配置为执行客户端身份验证,这需要它检查 X.客户端提供的 509 证书。因此,无论如何,客户端都需要自己的证书。

SSL/TLS 并不是真正为此而设计的......它是/旨在保护网络流量在传输过程中不被看到,并且客户端能够告诉他们正在与哪个服务器交谈并将敏感信息发送到(它是真正为电子商务而设计,客户(购买东西的用户)知道他们将信用卡信息发送给谁)。在 SAML 的情况下,关键是各方要知道他们正在交换的信息在传输过程中没有改变,并且每个人都在与他们认为自己的身份交谈。使用证书来签署/加密该消息本身就可以实现这一点。

于 2009-06-11T14:34:07.460 回答