孤尽训练营打卡日记day25--JWT初识

前言

        在前面的学习中,我们已经学过了OAuth2,是一种第三方登录授权协议,今天我们要学习的是JWT,也是一种授权协议。为什么已经有OAuth2了,还要学习JWT呢,我们一起进入今天的学习。

什么是JWT

        Json web toke(JWT)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC7519)定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名

        

 Header 头部

        头部包含了两个部分,token类型和采用的加密算法

{
    "alg":"HS256",
    "typ":"JWT"
}

他会使用Base64 编码组成 JWT 结构的第一部分

Base64 是一种编码,也就是说,他是可以被翻译回原来的样子的,它并不是一种加密过程。

Payload 负载

        这部分是我们存放信息的地方,可以把用户id等信息放在这里,JWT 规范里面对这部分有进行了比较详细的介绍,常用的由 iss(签发者),exp(过期时间),sub(面向的客户),aud(接收方),iat(签发时间)

{
    "iss":"lionluo JWT",
    "iat":"1441593502",
    "exp":"1441594722",
    "aud":"www.exmaple.com",
    "sub":"[email protected]"
}

也是使用Base64 编码组成JWT结构的第二部分

Signature 签名

        前面两个部分都是使用Base64 进行编码的,即前端可以解开知道里面的信息。signature 需要使用编码后的header 和 payload以及我们提供的一个秘钥,然后使用header中指定的签名算法(HS256)进行签名,

        三个部分通过 "。" 连接。

签名的作用:保证JWT没有被篡改过。

为什么使用JWT

传统token认证

  1. 客户端去授权服务器申请令牌
  2. 客户端携带令牌访问资源服务器
  3. 资源服务器访问授权服务器校验令牌的合法性
  4. 授权服务器返回校验结果
  5. 校验成功返回用户信息给资源服务器
  6. 资源服务器返回资源给客户端 

缺点:用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下

JWT认证

改进:利用公钥私钥完成对令牌的加密,如果加密解密成功,则表示令牌合法,如果加密解密失败,则令牌无效,不合法。

JWT使用

公钥和私钥

授权中心和资源中心分别持有公钥和私钥

 

 私钥颁发令牌

 公钥验证令牌

天行健,君子以自强不息。地势坤,君子以厚德载物。

参考文档:刘雪松老师的PPT

猜你喜欢

转载自blog.csdn.net/qq_35056844/article/details/121431290
今日推荐