【应用安全】SAML2 vs JWT:比较
Chinese, Simplified
【应用安全】SAML2 vs JWT:比较
这篇文章总结了我们对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:X509BinarySecurityToken类型
- JWT:JSON Web Key规范(JWK)
核心规格范围
- 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-Trust规范中定义
- JWT:OAuth2的扩展规范(OAuth2令牌交换规范)
支持动态信任库更新和元数据信息的发布。
- SAML2:WS-Federation规范定义了如何发布此信息。但是,它并没有普遍使用。客户端很少动态检索IdP发布的信息以更新其签名者证书信任库。
- JWT:OpenID Connect Discovery规范定义了发布IdP元数据的元数据端点。强烈建议构建可以访问此信息并动态构建/更新信任库的客户端。**
*使用库几乎总是建议从头开始构建查询/请求。
**当必须续签签名者证书时,这一个细节可以节省1000个工时。
*** JWE和XML加密也会有很多相关的差异,但我还没有达到那个系列:)。
XML DSig与JSON Web签名系列中列出的所有差异也适用于此处。
讨论: 请加入知识星球【首席架构师圈】
本文地址
https://architect.pub/application-security-saml2-vs-jwt-comparison
- 60 次浏览
SEO Title
【Application Security】SAML2 vs JWT: A Comparison