shawlp / interview-codes

1 stars 0 forks source link

谈谈oAuth2认证,jwt机制 #30

Open shawlp opened 3 years ago

shawlp commented 3 years ago

oAuth2:关于授权的开放标准,核心思路是通过各类认证手段认证用户身份,并颁发token(令牌),使得第三方应用可以使用该token在限定时间、限定范围访问指定资源

授权码模式: image

应用场景:各大应用内的qq,微信,微博登录等

JWT机制: JWT全称为Json Web Token,随着微服务架构的流行而越来越火,号称新一代的认证技术。 OAuth2中使用token验证用户登录合法性,但token最大的问题是不携带用户信息,资源服务器无法在本地进行验证,每次对于资源的访问,资源服务器都需要向认证服务器发起请求,一是验证token的有效性,二是获取token对应的用户信息。如果有大量的此类请求,无疑处理效率是很低,且认证服务器会变成一个中心节点,这在分布式架构下很影响性能。

普通的oauth2颁发的就是一串随机hash字符串,本身无意义,而jwt使用一种特殊格式的token,token是有特定含义的,分为三部分: -头部Header -载荷Payload -签名Signature 这三部分均用base64进行编码,并使用.进行分隔。一个典型的jwt格式的token类似xxxxx.yyyyy.zzzzz。

jwt相对于传统的token来说,解决以下两个痛点: 1、通过验证签名,对于token的验证可以直接在资源服务器本地完成,不需要连接认证服务器; 2、在payload中可以包含用户相关信息,这样就轻松实现了token和用户信息的绑定; 如果认证服务器颁发的是jwt格式的token,那么资源服务器就可以直接自己验证token的有效性并绑定用户,这无疑大大提升了处理效率且减少了单点隐患。