为什么使用x.509证书加密xml?为什么不通过https传输?

fra*_*lic 1 security encryption cryptography web-services x509

不太了解加密......

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

Bru*_*uno 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).


mar*_*c_s 6

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

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

  • SAML请求/响应往往不是加密签名.在基于浏览器的方案中,如果用户与SP之间的连接以及用户与IdP之间的连接都是通过HTTPS进行的,则加密SAML主要是防止用户自己看到SAML内容.很少有必要将它隐藏起来.有用的是签名,用于验证不通过SSL/TLS直接通信的各方之间的消息(请参阅我的回答). (2认同)