token基本流程

token是什么?

1、token基本概念

token是对session的一个升级,解决了前后端分离的session不能共享的一个难题

(1)token是什么?

  • 访问资源接口(API)时所需要的资源凭证。一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。
  • 简单 token 的组成: uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)

token基本流程_第1张图片

(2)token一般存放在哪里?

token 在客户端一般存放于localStorage、cookie、或sessionStorage中。

2、token基本流程

  • (1)用户登陆,发送手机号码和验证码
  • (2)后台接收参数,查找用户,用户存在就生成token,返回给前端
  • (3)前端登陆成功,把token存到vuex(做持久化)
  • (4)使用axios拦截器,读取vuex中的token,并放入请求头
  • (5)请求其他接口,就会带上token
  • (6)后台在需要登陆的接口上,获取token,解密token获得userId,返回前端需要的数据
  • (7)用户在下次使用app,如果token还在有效期内,不需要重新登陆

客户端使用用户名跟密码去请求登陆,服务度段收到请求,去验证用户名和密码,验证成功后,服务端会签发一个token,再把这个token发送给客户端,客户顿收到token之后能够把它存储起来,好比放在cookie里面或者local storage里面,客户端每次向服务端请求资源的时候须要带上服务端签发的token,服务端收到请求,而后去验证客户端请求里面带着的token,若是验证成功,以某种方式好比随机生成32位的字符串做为token,存储在服务器中,并返回token到APP,之后APP请求时,凡是须要验证的地方都要带上该token,而后服务端验证token,成功返回所须要的结果,失败返回错误信息,从新登陆,服务器上的token设置一个有效期,每次APP请求时都要验证token和有效期

3、token的原理

token基本流程_第2张图片

1) 将荷载payload,以及Header信息进行Base64加密,形成密文payload密文,header密文。

2) 将形成的密文用句号链接起来,用服务端秘钥进行HS256加密,生成签名.

3) 将前面的两个密文后面用句号链接签名形成最终的token返回给服务端

说明:

(1)用户请求时携带此token(分为三部分,header密文,payload密文,签名)到服务端,服务端解析第一部分(header密文),用Base64解密,可以知道用了什么算法进行签名,此处解析发现是HS256。

(2)服务端使用原来的秘钥与密文(header密文+"."+payload密文)同样进行HS256运算,然后用生成的签名与token携带的签名进行对比,若一致说明token合法,不一致说明原文被修改。

(3)判断是否过期,客户端通过用Base64解密第二部分(payload密文),可以知道荷载中授权时间,以及有效期。通过这个与当前时间对比发现token是否过期。

4、token实现思路

token基本流程_第3张图片

1.用户登陆校验,校验成功后就返回token给客户端
2. 客户端收到数据后保存在客户端
3. 客户端每次访问api是携带token到服务器端
4. 服务器端采用filter过滤器校验. 校验成功则返回请求数据,校验失败则返回错误码

你可能感兴趣的:(Java,http,token,java,安全架构)