基于JWTS实现token

1、定义

JSON Web Token(JWT)是一个很是轻巧的规范。这个规范容许咱们使用JWT在用户和服务器之间传递安全可靠的信息。算法

一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。安全

1.头部服务器

头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也能够被表示成一个JSON对象。加密

{"typ":"JWT","alg":"HS256"}spa

2.载荷jwt

载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分对象

(1)标准中注册的声明(建议但不强制使用)字符串

(2)公共的声明get

公共的声明能够添加任何的信息,通常添加用户的相关信息或其余业务须要的必要信息.但不建议添加敏感信息,由于该部分在客户端可解密.base64

(3)私有的声明

私有声明是提供者和消费者所共同定义的声明,通常不建议存放敏感信息,由于base64是对称解密的,意味着该部分信息能够归类为明文信息。

定义一个payload:

{"sub":"1234567890","name":"John Doe","admin":true}

而后将其进行base64加密,获得Jwt的第二部分:

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

3.签证

jwt的第三部分是一个签证信息,这个签证信息由三部分组成:

header (base64后的)

payload (base64后的)

secret

这个部分须要base64加密后的header和base64加密后的payload使用.链接组成的字符串,而后经过header中声明的加密方式进行加盐secret组合加密,而后就构成了jwt的第三部分

注意:

secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,因此,它就是你服务端的私钥,在任何场景都不该该流露出去。一旦客户端得知这个secret, 那就意味着客户端是能够自我签发jwt了。

详细连接

https://www.jianshu.com/p/99a458c62aa4

 

注意:

JWT是保存在客户端的,服务器只是对Token进行合法性验证,并不保存

JWTS比较局限,( JWT签名算法中,通常有两个选择,一个采用HS256,另一个就是采用RS256)实际生产中,不安全。生产环境中会用反复,加解密,而且可能会首先加严

相关文章
相关标签/搜索