JWT的工作原理

JWT的工作原理

参考地址:

https://www.cnblogs.com/cjsblog/p/9277677.html

https://jwt.io

https://baijiahao.baidu.com/s?id=1608021814182894637&wfr=spider&for=pc

什么是JWT

JWT: JSON Web token 用于json对象在各方之间安全的传输信息,它是安全可被信任的,因为它是数字签名的。JWT是目前最流行的跨域身份验证解决方案

JWT应用场景
  1. Authorization(授权):用户登录后,以后的每个请求中都包含JWT,允许用户访问该令牌允许的路由,资源和服务。单点登录是目前广泛使用的JWT的一个特性,因为它开销很小,而且可以轻松跨域使用

    PS:单点登录:(Single Sign On),简称为 SSO,SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

  2. Informatica Exchange(信息交换):由于JWT可以是数字签名,且可以验证内容是否被篡改,因此对于在各方之间安全传输信息而言,是一种很好的方式

JWT结构

  1. Header

    header典型的由2个部分组成:token的类型(jwt)和算法名称(如SHA256,RSA等)
    例如:

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

    然后用base64对这个json编码就得到JWT的第一个部分

  2. payload

    payload是JWT的主体部分,包含了需要传递的数据。JWT指定7个默认字段供选择

    • iss:发行人
    • exp:到期时间
    • sub:主题
    • aud:用户
    • nbf:在此之前不可用
    • iat:发布时间
    • jti:JWT ID用于标识该JWT

    除了上述默认字段,还可以定义私有字段,例如:

     {
         "sub": "1234567890",
         "name": "chongchong",
         "admin": true
     }
    

    对payload进行base64编码就得到JWT的第二个部分

    PS:默认情况下JWT是未加密的,任何人都可以解读其内容,因此不要在header和payload
    构建隐私信息字段,存放保密信息,以防止信息泄露。

  3. Signature

    Signatu是指签名部分,它是由编码过的header,编码过的payload,一个密钥,签名算法是header中指定的那一个,例如:

     HMACSHA256(base64UrlEncode(header) + "."+ base64UrlEncode(payload), secret)
    

签名是用于验证消息在传递过程中有没有被更改,并且,对于使用私钥签名的token,它还可以验证JWT的发送方是否为它所称的发送方。

JWT如何进行工作

当用户使用他们的凭证登录成功后,一个JWT就会被返回,此后,这个返回的token就是用户凭证。无论何时用户想要访问受保护的路由或者资源的时候,用户代理(浏览器)都应该带上JWT。保存JWT的时间不应该超过你所需要的时间,否则可能会出现安全问题。通常JWT放在Authorization header中

header看起来应该是这样:

    Authorization: Bearer <token>

服务器上受保护的路由会检查Authorization header中的JWT是否有效,如果有效,则用户可以访问受保护的资源

JWT工作:

  1. 应用或客户端向授权服务器请求授权
  2. 当授权被许可后,授权服务器返回一个access token给应用
  3. 客户端存储token,并且在随后的每一次请求中都带着它
  4. 服务器校验token并返回数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值