我已经使用Sprint Boot,Spring security和JWT完成了一个示例应用程序,并定义了我的自定义身份验证和授权过滤器。在执行基本身份验证(传递用户名和密码)时,我得到了xwt.yyyy.zzzz格式的JWT令牌,其中xxxx是标头,yyyy是有效负载,zzzz是签名,并且每个部分都使用Base64URL编码器进行了编码。我不了解的是JWT与OAuth 2.0有何不同。在OAuth 2.0中,我们可以传递两种类型的grant_types作为“用户名”或“客户端凭据”,并且还需要传递客户端ID,秘密ID来获取访问权限和刷新令牌。
请协助澄清我的以下疑问: 1)JWT是否比OAuth 2.0轻巧,因为它不包含刷新令牌,而仅包含访问令牌? 2)是否可以使用JWT来制作独立的授权服务器,就像我们可以在OAuth 2.0上使用@EnableAuthorizationServer批注来制作独立的授权服务器一样。我的假设正确吗? 3)JWT不接受客户端ID /秘密客户端,而仅用作获取承载令牌的基本身份验证? 4)OAuth2.0和JWT的访问令牌(或承载)的格式是否不同?
我看过一个同时使用OAuth 2.0和JWT的示例。 OAuth 2.0的目的是使授权服务器仅在最后返回JWT令牌,但是如果OAuth2.0可以自行返回令牌,则无法理解为什么使用JWT。
谢谢
答案 0 :(得分:1)
JWT是RFC 7519中定义的基于JSON的令牌。 OAuth 2.0是在RFC 6749中定义的授权框架。比较两者就像问“葡萄糖与苹果派有何不同?”。
但是,可以按照RFC 7523 – OAuth 2.0客户端身份验证和授权授予的JSON Web令牌(JWT)配置文件中的定义将OAuth 2.0和JWT放在一起。它标准化了如何在OAuth 2.0框架内将JWT用作承载令牌,从而启用了我所谓的stateless authentication。
关于您的问题: