网站app封装怎么做,证券网站怎么做,网页设计师证,官方你网站建设策略一、JWT
JSON Web Token#xff08;JWT#xff09;是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 一个JWT实际上就是一个字符串#xff0c;它由三部分组成#xff0c;头部、载荷与签名。
头部#xff08;Header#xff09;
头…一、JWT
JSON Web TokenJWT是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 一个JWT实际上就是一个字符串它由三部分组成头部、载荷与签名。
头部Header
头部用于描述关于该JWT的最基本的信息例如其类型以及签名所用的算法等,这也可以被表示成一个JSON对象。
{typ:JWT,alg:HS256}载荷playload
载荷就是存放有效信息的地方。包含三个部分:
1标准中注册的声明建议但不强制使用
iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识主要用来作为一次性token。2公共的声明
公共的声明可以添加任何的信息一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息因为该部分在客户端可解密.
3私有的声明
私有声明是提供者和消费者所共同定义的声明一般不建议存放敏感信息因为base64是对称解密的意味着该部分信息可以归类为明文信息。
这个指的就是自定义的claim。比如前面那个结构举例中的admin和name都属于自定的claim。这些claim跟JWT标准规定的claim区别在于JWT规定的claimJWT的接收方在拿到JWT之后都知道怎么对这些标准的claim进行验证(还不知道是否能够验证)而private claims不会验证除非明确告诉接收方要对这些claim进行验证以及规则才行。 定义一个payload:
{sub:1234567890,name:John Doe,admin:true}签证signature
jwt的第三部分是一个签证信息这个签证信息由三部分组成
header (base64后的)payload (base64后的)secretsecret是保存在服务器端的jwt的签发生成也是在服务器端的secret就是用来进行jwt的签发和jwt的验证所以它就是你服务端的私钥在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。