跳转到主要内容
Chinese, Simplified

这篇文章总结了我们对SAML2和JWT的讨论。在这里,我们看一下这两种技术的特性和用例的比较。很难对JWT和SAML2进行直接比较。正如我们在本系列中看到的那样,必须考虑与这些规范一起使用的规范。


对于JWT,我们必须考虑:


对于SAML2,我们必须考虑


以下总结了SAML2和JWT之间的主要区别。此帖子的原始版本使用表格格式,但Medium.com不支持表格。


年龄

 

  • SAML2:SAML 1.0于2002年推出; SAML2于2005年推出。
  • JWT:2014年发布的JWT RFC.JWT更新。


采用

 

  • SAML2:SAML2是Enterprise SSO的事实标准。它已经有一段时间了。
  • JWT:JWT,OAuth2和OpenID Connect在社交媒体和科技创业公司中很常见,但现在才进入企业。

哲学

 

  • SAML2:更多的学术方法。简单性不是设计目标。假设将开发运行时库来实现此功能。
  • JWT:简单。首先假设应用程序开发人员将实现客户端代码。随着规范的成熟和企业的采用,社区开始摆脱这种局面。


令牌类型

 

  • SAML2:SAML断言(格式严格按规格定义)
  • OAuth2:access_token(可以是JWT,但不一定是)
  • OIDC:access_token(可以是JWT)和id-token(必须是JWT)。


数据结构

 

  • SAML2:XML(使用XSD定义的结构)
  • JWT:JSON(有趣的是,结构不是由JSON Schema定义的)


大小

 

  • SAML2:与JWT相比,趋向于非常大。大小取决于存在的字段,使用签名和加密。
  • JWT:比SAML2令牌小很多。 Spec鼓励使用对签名证书的引用而不是嵌入它 - 消除了大型x509签名者证书。
  • 支持消息传递协议
  • SAML2:主要基于SOAP。
  • JWT:REST API


绑定和传输协议

 

  • SAML2:SAML2可以是HTTP POST,HTTP GET,SOAP(取决于场景),JMS(很少见,但可能发生),等等
  • JWT:HTTPS


数字签名

 

  • SAML2:XML签名
  • JWT:JWS(支持的散列和加密算法略有不同)


消息级加密

 

  • SAML2:XML加密
  • JWT:JWE(支持的加密算法略有不同)***


X509证书表示

 


核心规格范围

 

  • SAML2:定义令牌(SAML断言)和底层协议(用于Web App SSO)的结构。
  • JWT:JWT仅定义令牌结构。 OAuth2和OpenID Connect定义协议。


客户端基础架构

 

  • SAML2:通常需要支持库(重量级)
  • JWT:通常可以通过构造简单的HTTP查询来实现。签名和加密将是此规则的例外。*


主题确认方法支持

 

  • SAML2:SAML2支持承载令牌,密钥持有者和发件人凭证。
  • JWT:JWT最初只支持Bearer Tokens。 Key持有人(2016年4月增加了占有证明支持)。


授权和假冒(OnBehalfOf和ActAs)

 


支持动态信任库更新和元数据信息的发布。

 

  • SAML2:WS-Federation规范定义了如何发布此信息。但是,它并没有普遍使用。客户端很少动态检索IdP发布的信息以更新其签名者证书信任库。
  • JWT:OpenID Connect Discovery规范定义了发布IdP元数据的元数据端点。强烈建议构建可以访问此信息并动态构建/更新信任库的客户端。**


*使用库几乎总是建议从头开始构建查询/请求。
**当必须续签签名者证书时,这一个细节可以节省1000个工时。
*** JWE和XML加密也会有很多相关的差异,但我还没有达到那个系列:)。
XML DSig与JSON Web签名系列中列出的所有差异也适用于此处。

 

原文:https://medium.com/@robert.broeckelmann/saml2-vs-jwt-a-comparison-254bafd98e6

本文:http://pub.intelligentx.net/node/368

讨论: 请加入知识星球【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号