Spring Security学习笔记(八) -- JWT令牌

6.3JWT令牌

6.3.1JWT介绍

通过前面文章的提到的,当资源服务器与授权服务器不在一起时,资源服务使用RemoteTokenServices远程请求授权服务验证token,如果访问量较大将会影响系统的性能。

解决上面的问题:

令牌采用JWT格式即可解决上面的问题,用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只要携带JWT访问资源服务,资源服务等根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。

1、什么是JWT?

JSON Web Token(JWT),是一个开放的行业标准(RFC7519),它定义了一种简介的,自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公钥/私钥对来签名,防止被篡改。

JWT令牌的优点:

  • JWT基于JSON,非常方便解析;
  • 可以在令牌中自定义丰富的内容,易扩展;
  • 通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。
  • 资源服务使用JWT可不依赖认证服务即可完成授权。

缺点:

  • JWT令牌较长,占存储空间比较大。

2、JWT令牌结构

JWT令牌由三部分组成,每部分中间使用点 . 分隔,比如:xxxx.xxxx.xxxx

- Header:

头部包含令牌的类型(即JWT)及使用的哈希算法(如HMAC SHA256或R5A)

一个例子如下:

下面是Header部分的内容:

{

        "alg":"HS256",

        "typ":"JWT"

}

将上面内容使用Base64Url编码,得到一个字符串就是JWT令牌的第一部分。

- Payload

第二部分是负载,内容也是一个JSON对象,它是存放有效信息的地方,它可以存放JWT提供的现成字段,比如:iss(签发者)、exp(过期时间戳)、sub(面向的用户)等,也可自定义字段。

一个例子:

{

        "sub":"123456",

        "name":"789",

        "admin":"true"

}

- Signature

第三部分是签名,此部分用于

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值