JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;它是分布式服务权限控制的标准解决方案!
官网:https://jwt.io
GitHub上jwt的java客户端:https://github.com/jwtk/jjwt
普通的token:32位UUID
JWT的token:
JWT的token包含三部分数据:
一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。
头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以 被表示成一个JSON对象。
{
"typ":"JWT",
"alg":"HS256"
}
这就是头部的明文内容,第一部分说明他是一个jwt,第二部分则指出签名算法用的是HS256算法。
然后将这个头部进行BASE64编码,编码后形成头部:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
载荷就是存放有效信息的地方,有效信息包含三个部分:
(1)标准中注册的声明(建议但不强制使用)
(2)公共的声明
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息. 但不建议添加敏感信息,因为该部分在客户端可解密.
(3)私有的声明
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64 是对称解密的,意味着该部分信息可以归类为明文信息。
{
"sub":"1234567890",
"name":"tengshe789",
"admin": true
}
上面就是一个简单的载荷的明文,接下来使用base64加密:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第 三部分。
结论:
1 jwt的一个有规则的token
2 它有三部分组成:Header.payload.signature,每部分都是通过base64加密而成的
3 jwt每个部分都是可以解密的
以上就是今天的内容,如果错误,请在下方评论哦!!