JWT与SAML之间的区别是什么?

68

JWT(JSON Web Token)和SAML的主要区别是什么?

您能为我提供使用Spring Security的这些内容的任何示例吗?


1
请查看这个更深入的比较和解释:http://security.stackexchange.com/questions/82587/json-web-tokens-vs-saml - Jørgen Tvedt
3个回答

93

SAMLJWT 都是安全令牌格式,不依赖于任何编程语言。SAML 是一种早期的格式,基于 XML。它通常用于协议中,如 SAML-P、WS-Trust 和 WS-Federation(虽然不是严格要求)。

JWT(JSON Web Token)令牌基于 JSON,并用于新的身份验证和授权协议,如 OpenID Connect 和 OAuth 2.0。


请问您能否推荐任何Spring的示例实现? - Jamsheer
我无法从经验上推荐任何东西,因为我不是Java开发人员。但请看一下这个幻灯片的第50页:http://www.slideshare.net/JAX_London/spring-day-identity-management-with-spring-security-dave-syer - MvdD
59
SAML规范包含协议和令牌格式,而JWT仅仅是一种令牌格式。 - Hans Z.
1
我发现这篇文章很有用,尽管它将SAML2和JWT进行了比较: https://medium.com/@robert.broeckelmann/saml2-vs-jwt-a-comparison-254bafd98e6 - oislek

22

两者均用于身份验证和授权,通常用于单点登录(SSO)解决方案。

Security Assertion Markup Language(SAML,发音为SAM-el)是一种基于XML的标准,用于在各方之间交换身份验证和授权数据,即IdP身份提供者)和SP服务提供者)。

  • IdP身份提供者):对用户进行身份验证,并在成功时向服务提供商提供身份验证声明。身份提供者提供用户身份认证服务
  • SP服务提供者):依赖身份提供者来对用户进行身份验证。
SAML术语 OAuth术语 描述
客户端 客户端 例如:Web浏览器
Identity Provider(IdP) 授权服务器 拥有用户身份和凭据的服务器
Service Provider(SP) 资源服务器 受保护的应用程序

JSON Web Token(JWT,发音为JOT)是一种基于 JSON 的 ID Token,用于将用户信息作为Header、Payload和Signature结构传递。 https://jwt.io/

OpenID Connect(OIDC)是建立在OAuth 2.0协议上的,并使用额外的 JSON Web Token(JWT)——称为ID Token。这个令牌是一种紧凑且自包含的身份验证机制,使用JSON对象来编码签名和加密的声明。JWT可用于验证客户端、在各方之间传递信息或验证API。

应用场景:

  • OIDC专注于用户身份验证,并广泛用于消费者网站和移动应用程序中启用用户登录,例如Stackoverflow使用 Google 账户登录。

  • SAML通常用于帮助企业用户使用单个登录登录多个应用程序。

  • OIDC相比SAML更现代化、轻量级且易于使用,而SAML则提供了一个更完整和复杂的解决方案,用于企业场景中的SSO和身份管理。


6
关于“pronounced jot”,请参见 https://www.rfc-editor.org/errata/eid5648。 - Pang

10
除了使用XML的SAML和使用JSON的JWT之外,SAML是一种协议和令牌格式,而JWT只是一种令牌格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接