OAuth2.0实现原理

OAuth2.0实现原理,第1张

什么是Token?
Token指访问资源的凭据,是一种身份认证的方式,它是解决跨域认证的最流行的一种方式。

为什么用Token?
以前较为流行的是通过session去做身份认证,session是通过服务器中保存会话数据来做身份认证,这种方式会导致在高并发中服务器压力过大的情况,还有就是,如果是服务器集群,那么就需要这些服务器session共享。
Token不在服务器中保存会话数据,而是保存在客户端。每次请求的headers中存入Token,在服务器中判断Token的有效性,是否可以访问资源。

传统Token和JWT的区别

内部包含有签名算法、Token类型,然后通过base64url算法转成字符串

内部包含JWT标准数据和自定义数据,然后通过base64url算法转成字符串
JWT标准数据常见的有:

可选择性使用以上标准数据

注意:由于JWT是默认不加密的,所以在这边不要存敏感信息

这部分是对前两部分的签名,防止数据的篡改。
secret是服务器端保存的密钥,只有服务器端知道,再使用header中所指定的签名算法对上面的俩部分进行签名,按照以下公式生成签名。

算出签名之后,把三部分通过分隔开返回给用户就行了
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpZCI6MTAsIm5hbWUiOiLlvKDkuIkiLCJhZ2UiOjE2LCJpYXQiOjE1ODgxMzkzMjMsImV4cCI6MTU4ODEzOTMzM30WzZp_aNgiw4iTsX7buxMhZe0z0e94Ve6ImEZ8L8L78c

每次客户端的请求都需要带上这个token,一般是把token写入到请求的headers中

通过npm包jsonwebtoken来完成token的生成和验证

>

token是一个用户自定义的任意字符串。

在成功提交了开发者自定义的这个字符串之后,token的值会保存到微信后台。只有服务器和微信后台知道这个字符串,也就是说只有微信后台和公众账号服务器知道这个字符串。

字符串主要用于

编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j",这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12946359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存