前言:
现在朋友们对“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原理