JSON WEB TOKEN (JWT)

1 篇文章 0 订阅

什么是JWT

就是token JWT是一种规范。用来生成一种紧凑安全的token,由三部分组成。

1 Header

header主要是两部分信息

  • 声明类型
  • 加密算法
    数据如下
{
'typ':'JWT',
'alg':'HS256'
}

然后进行base64加密结果如下

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

2 payload

payload 是我们token中的有用的信息字段
通常包含三部分

  • 公共声明
  • 共有声明
  • 私有声明
    通常不要放敏感信息,因为token在客户端可以解密
{
'typ':'JWT',
'name':‘json’,
‘role’:‘admin’
}

然后老规矩 base64加密得

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

3 secret

第三部分就简单了

// 得到header和payload加密后的组合字段
String str = base64UrlEncode(header)+'.'+base64UrlEncode(payload)
//用header中指定的加密方式进行加密,用‘secret’做盐
String result = HMACSHA256(str,'strect')

得到

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

最终这三个加密完成以后的字符串一拼接,就构成了token

注意 因为token的生成是在服务器端的,生成成功以后返回给客户端。。。这个serect相当于服务端的私钥,,,后期服务端验证token也是基于该serect 所以Serect不能外传的,如果别人拿到了该serect,那么就有可能伪造token。

应用

通常token是加在请求头中的如下并加上Bearer(搬运人)标注。

fetch('api/user/1', {
  headers: {
    'Authorization': 'Bearer ' + token
  }
})

总结:

token是一种身份识别的技术,,客户端在登录以后服务端会生成一个token返回给客户端,客户端后面每次请求带上token,服务端通过token来识别是哪个用户的请求。。所以token的payload中里面最好带有客户端的唯一标识比如userId之类。

吃水不忘挖井人 参考自博客
https://www.jianshu.com/p/576dbf44b2ae

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值