龙空技术网

jwt原理简介

丫丫静 117

前言:

现在朋友们对“java jwt原理”大约比较看重,我们都需要了解一些“java jwt原理”的相关资讯。那么小编同时在网络上汇集了一些关于“java jwt原理””的相关内容,希望朋友们能喜欢,小伙伴们快快来学习一下吧!

1. JWT和传统token

基于传统的token认证

用户登录,服务端给返回token,并将token保存在服务端。

以后用户再来访问时,需要携带token。服务端获取token后,再去数据库取token

jwt

用户登陆,服务端给用户返回一个token(服务端不保存)。

以后用户再来访问需要携带token,服务端获取token后,再做token的校验

优势:相较于传统的token,它无需在服务端保存token

2. JWT实现过程

第一步,用户提交用户名和密码给服务端,如果登录成功使用jwt创建一个token,并给用户返回

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

注意:JWT生成的token是由三段字符串组成的,并且用.连接起来

第一段字符串,HEADER,内部包含算法和token类型,json转化为字符串,然后做base64url的转码

{

"alg": "HS256",

"typ": "JWT"

}

第二段字符串,payload,自定义值.

json转化为字符串,然后做base64url的转码

由于只是做了一层编码,所以这些信息都是透明的。不建议在里面传密码之类的敏感信息。

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022

}

第三段字符串

前两部分的密文拼接起来

对前2部分的密文进行HS256加密 + 加盐

对HS256加密后的密文再做base64url加密

以后用户再来访问,需要携带token,后端需要对token进行校验

获取token

第一步:对token进行切割

第二步:对第二段解码,获取payload,检测token是否超时

第三步:把前两段拼接再次执行HS256加密,把加密后的密文和第三段比较。如果相等,认证通过

标签: #java jwt原理