走过路过不要错过,有钱捧个钱场,没钱捧个人场. 欢迎欢迎.|

志旋

园龄:4年10个月粉丝:5关注:1

JWT和oath2区别

JWT简介

JSON Web Token (JWT)是用于创建断言某些声明的令牌的标准。例如,服务器可以生成具有“以管理员身份登录”声明的令牌,并将其提供给客户端。然后客户端可以使用该令牌来证明他们以管理员身份登录。令牌由服务器的密钥签名,因此服务器能够验证令牌是否合法。

标头标识用于生成签名的算法,看起来像这样:

header = '{"alg":"HS256","typ":"JWT"}'

HS256 表示此令牌是使用 HMAC-SHA256 签名的。

有效载荷包含我们希望做出的声明:

payload = '{"loggedInAs":"admin","iat":1422779638}'

正如 JWT 规范中所建议的,我们包含了一个名为 的时间戳iat,它是“issued at”的缩写。

签名是通过 base64url 对标头和有效负载进行编码并用句点作为分隔符将它们连接起来计算的:

key = 'secretkey'
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)
signature = HMAC-SHA256(key, unsignedToken)

总而言之,我们对签名进行 base64url 编码,并使用句点将三部分连接在一起:

token = encodeBase64(header) + '.' + encodeBase64(payload) + '.' + encodeBase64(signature)

# token is now:
# eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

JWT应用

服务器端:

1-生成head

2-生成payload,通常带有expired过期时间

3-第三段:

1和2密文拼接,

对第2部分密文进行sh256加密+盐

然后发送给浏览器

浏览器:

每次携带token

服务器端

获取token

切割

逐段解密,可验证过期时间

第二段第三段,加密对比,密文,如果相等,标识token为被修改过

Oath2

是什么

OAuth是访问委派的开放网络标准,通常用于互联网用户授予网站或应用程序访问其信息在其他网站上,但不给他们密码的一种方式

解决问题

  • 任何身份认证,本质解决的问题是双方不信任问题
  • 开放平台依托知名,不用本地存储大量的信息,得到很好的应用

角色

  • 资源拥有者(Resource Owner)
  • 代理(浏览器)或者手机APP平台(user-agent)
  • 客户端/第三方应用(client)
  • 资源服务器(resource server)
  • 授权服务器(authorization server)

授权流程

参考网站

开放平台由什么组成?

  • 开发者中心
  • 网关
    • 限流
    • 鉴权
  • 授权平台

本文作者:志旋

本文链接:https://www.cnblogs.com/wuzhixuan/p/15464296.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   志旋  阅读(145)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起