JWT和OAuth2

原文链接:https://blog.csdn.net/arispy/article/details/123541758

9.Token 和 JWT 的区别
相同:

都是访问资源的令牌

都可以记录用户的信息

都是使服务端无状态化

都是只有验证成功后,客户端才能访问服务端上受保护的资源

区别:

Token:服务端验证客户端发送过来的 Token 时,还需要查询数据库获取用户信息,然后验证 Token 是否有效。

JWT:将 Token 和 Payload (载荷)加密后存储于客户端,服务端只需要使用密钥解密进行校验(校验也是 JWT 自己实现的)即可,不需要查询或者减少查询数据库,因为 JWT 自包含了用户信息和加密的数据

 


要比较JWT和OAuth2,首先要明白一点就是,这两个根本没有可比性,是两个完全不同的东西。

JWT是一种认证协议

JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。 令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。

OAuth2是一种授权框架

另一方面,OAuth2是一种授权框架,提供了一套详细的授权机制(指导)。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源。

为什么要比较

既然JWT和OAuth2没有可比性,为什么还要把这两个放在一起说呢?实际中确实会有很多人拿JWT和OAuth2作比较。很多情况下,在讨论OAuth2的实现时,会把JSON Web Token作为一种认证机制使用。这也是为什么他们会经常一起出现。

简单来说:应用场景不一样

  1. OAuth2用在使用第三方账号登录的情况(比如使用weibo, qq, github登录某个app)

  2. JWT是用在前后端分离, 需要简单的对后台API进行保护时使用.(前后端分离无session, 频繁传用户密码不安全)

OAuth2是一个相对复杂的协议, 有4种授权模式, 其中的access code模式在实现时可以使用jwt才生成code, 也可以不用.

授权码(authorization-code) 隐藏式(implicit) 密码式(password): 客户端凭证(client credentials)

 

它们之间没有必然的联系;

oauth2有client和scope的概念,jwt没有。

如果只是拿来用于颁布token的话,二者没区别。

常用的bearer算法oauth、jwt都可以用,只是应用场景不同而已。


 

posted @ 2023-03-21 16:43  古锁阳关  阅读(297)  评论(0编辑  收藏  举报