头部(Header)
JWT还需要一个头部,头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等 。这也可以被表示成一个JSON对象:
在这里,我们说明了这是一个JWT,并且我们所用的签名算法(后面会提到)是HS256算法 。
对它也要进行Base64编码,之后的字符串就成了JWT的Header(头部):
将上面的两个编码后的字符串都用句号.连接在一起(头部在前),就形成了:
最后,我们将上面拼接完的字符串用HS256算法进行加密 。在加密的时候,我们还需要提供一个密钥(secret):
这样就可以得到我们加密后的内容:
这一部分又叫做签名 。
最后将这一部分签名也拼接在被签名的字符串后面,我们就得到了完整的JWT:
文章插图
JWT 认证过程A JWT token contains a Header, a Payload, and a Signature.
Header
Header contains the algorithms like RSA or HMACSHA256 and the information of the type of Token.
Payload
Payload contains the information of rows, i.e., user credentials.
How Does JWT Work?
Step 1
Client logs in with his/her credentials.
Step 2
Server generates a Jwt token at server side.
Step 3
After token generation, the server returns a token in response.
Step 4
Now, the client sends a copy of the token to validate the token.
Step 5
The server checks JWT token to see if it's valid or not.
Step 6
After the token is validated, the server sends a status message to the client.
[图片上传中...(-4ee818-1642837712343-0)]
授权流程:
1、用户请求登录,携带用户名密码到授权中心
2、授权中心携带用户名密码,到用户中心查询用户
3、查询如果正确,生成JWT凭证
4、返回JWT给用户
鉴权流程:
1、用户请求某微服务功能,携带JWT
2、微服务将jwt交给授权中心校验
3、授权中心返回校验结果到微服务
4、微服务判断校验结果,成功或失败
5、失败则直接返回401
6、成功则处理业务并返回
什么是JWTJWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串 。就像这样:
jwt的头部承载两部分信息:
声明类型,这里是jwt
声明加密的算法 通常直接使用 HMAC SHA256
完整的头部就像下面这样的JSON:
然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分.
载荷就是存放有效信息的地方 。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分
标准中注册的声明
公共的声明
私有的声明
标准中注册的声明 (建议但不强制使用) :
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密.
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息 。
定义一个payload:
然后将其进行base64加密,得到Jwt的第二部分 。
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分 。
将这三部分用.连接成一个完整的字符串,构成了最终的jwt:
【jwt有哪几部分组成 jwt】 一般是在请求头里加入Authorization,并加上Bearer标注:
秒懂生活扩展阅读
- 天津有哪些大学有美术专业
- 长白山|国内5处适合度假消夏的地方,有众多景色和娱乐设施
- 朝代和国家有什么不同
- 光孝寺在广州哪里 光孝寺
- 有关动物的书籍
- 贵州有哪些国有企业
- 码头|零度的楠溪江清晨,竹筏码头分外空寂,只有我在享受日出前的宁静
- 榴莲是不是水果之王啊
- 银耳上总有小黑点洗不干净
- 防止窗户进灰尘有哪些妙招