牛逼!单点登录系统用 8 张漫画就解释了。。。
码农突围
共 3782字,需浏览 8分钟
·
2021-07-04 14:07
https://your.awesome-app.com/make-friend/?from_user=B&target_user=A
JWT的组成
载荷(Payload)
{
"iss": "John Wu JWT",
"iat": 1441593502,
"exp": 1441594722,
"aud": "www.example.com",
"sub": "jrocket@example.com",
"from_user": "B",
"target_user": "A"
}
iss
: 该JWT的签发者sub
: 该JWT所面向的用户aud
: 接收该JWT的一方exp
(expires): 什么时候过期,这里是一个Unix时间戳iat
(issued at): 在什么时候签发的
eyJpc3MiOiJKb2huIFd1IEpXVCIsImlhdCI6MTQ0MTU5MzUwMiwiZXhwIjoxNDQxNTk0NzIyLCJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiZnJvbV91c2VyIjoiQiIsInRhcmdldF91c2VyIjoiQSJ9
var base64url = require('base64url')
var header = {
"from_user": "B",
"target_user": "A"
}
console.log(base64url(JSON.stringify(header)))
// 输出:eyJpc3MiOiJKb2huIFd1IEpXVCIsImlhdCI6MTQ0MTU5MzUwMiwiZXhwIjoxNDQxNTk0NzIyLCJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiZnJvbV91c2VyIjoiQiIsInRhcmdldF91c2VyIjoiQSJ9
小知识:Base64是一种编码,也就是说,它是可以被翻译回原来的样子来的。它并不是一种加密过程。
头部(Header)
{
"typ": "JWT",
"alg": "HS256"
}
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
签名(签名)
.
连接在一起(头部在前),就形成了eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0
这一部分的过程在node-jws的源码中有体现
mystar
作为密钥的话,那么就可以得到我们加密后的内容rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM
https://your.awesome-app.com/make-friend/?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM
签名的目的是什么? Base64是一种编码,是可逆的,那么我的信息不就被暴露了吗?
签名的目的
alg
字段指明了我们的加密算法了。信息会暴露?
JWT的适用场景
- END - 最近热文
• 崩溃!补税10W+ • 字节1/3员工反对取消大小周:每年少赚10万块! • “我的开源项目被科技巨头拿去做产品了,注释中连名字都被删掉了” • 12门课100分,直博清华的学霸火了!“造假都不敢这么写”
评论