有 JWT 为什么还要用 OAuth2.0 来做登入和权限认证呢?



「JWT(Json Web Token)」是 token 的其中一种实现方式。
JWT 可以算得上是最著名的 token 技术,但 token 还有其他的形式,比如 bearer token, mac token,字符串等等。比如 SAML 协议中的「断言(Assertion)」就可以起到和 Token 相同的作用。

OAuth 2.0 则是一个授权标准协议,可以使第三方应用获得对资源服务的有限访问。

根据 OAuth 2.0 协议规范,定义了四个角色:

  • 资源所有者(Resource Owner):能够授予对受保护资源访问权限的实体。例如应用的用户是资源的所有者,可以授权其他人访问他的资源。当资源所有者是一个人时,它被称为最终用户。
  • 资源服务器(Resource Server):存储受保护资源的服务器,能够接受并使用访问令牌来响应受保护的资源请求。就是资源服务器接受Access Token,然后验证它拥有的权限,最后返回对应的资源。这个资源服务器一般是应用本身。
  • 授权服务器(Authorisation Server):服务器向客户端(即应用)颁发访问令牌来验证资源所有者并获得授权。即负责颁发 Access Token 的服务器,例如IDaaS 就是一个授权服务器。
  • 客户端(Client):需要获取访问令牌以访问资源服务器的应用。经过授权后,授权服务器为客户端颁发 Access Token。后续客户端可以携带这个 Access Token 到资源服务器那访问用户的资源。

很显然,这四个角色围绕着一个叫 Access Token 的东西在转圈圈。

既然都和 token 相关,那 OAuth2.0 和 JWT 之间究竟是什么关系呢?

客户端调用方获取 Access Token 的其中一种授权模式,就是授权码模式(Authorization Code):适用于具有完整前后端的传统 Web 应用以及移动或桌面端应用。

而在身份认证功能里,授权码模式所颁发的 id_token 就是 JWT!

实际上,JWT 也是 OIDC 协议的一部分。

OIDC 的全称是 OpenID Connect,是一个基于 OAuth 2.0 的认证 + 授权(OAuth 2.0 提供的能力)协议。简单来说,OIDC 可以理解为 OAuth 2.0 的超集,在 OAuth 2.0 之上实现了更多的标准。

上面讲到的 Access Token 也就是访问令牌,它用于允许应用访问一个资源 API。用户认证授权成功后,授权服务器会签发 Access Token 给应用。应用后续需要携带 Access Token 访问资源 API,资源服务 API 会检验 Access Token 是否有权限访问,从而决定是否返回对应资源。

所以,OAuth2.0 本身的任务是做第三方授权协议,比如 App 里面的第三方登录,认证成功后可以返回 token 之类的什么形式的数据。


点击链接,立刻了解 Authing!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值