栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

孤尽训练营打卡日记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":"lionlou@163.com"
}

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

Signature 签名

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

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

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

为什么使用JWT

传统token认证

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

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

JWT认证

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

JWT使用

公钥和私钥

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

 

 私钥颁发令牌

 公钥验证令牌

 

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号