概述
12.token工具
1.认识token(令牌)
token字符串:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.1KP0SsvENi7Uz1oQc07aXTL7kpQG5jBNIybqr60AlD4
header.body.对body按照header中指定的算法进行加密后的加密字符串
header:指定加密算法,比如HS256;
body:自定义的声明信息;(唯一的用户名或者手机号或者用户id,签发的时间,过期时间,签发机构。)
签名:对body按照指定的hs256算法+指定的密钥得到了加密后的信息。
2.jjwt组件生成token令牌字符串
1.添加依赖包jjwt-api;jjwt-impl;jjwt-jackson;jackson的3个jar包
2.使用对称算法HS256生成密钥:
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
3.指定body里的信息生成token字符串:
String jws = Jwts.builder().setClaims(Map).setIssuedAt(Date).setExpiration(Date).signWith(key).compact();
4.反向解析token字符串:
Jws<Claims> jws = Jwts.parserBuilder()
.setSigningKey(密钥).build().parseClaimsJws(token字符串);
3.token的使用
- 通过密保邮箱找回密码:
用户输入邮箱账号,点击找回密码,在服务端接口中根据邮箱账号去查找用户信息,找不到用户信息,则提示邮箱未注册;如果找到用户信息(uid:1,uname:’fyt‘,uphone:‘123123‘),生成一个30分钟有效的token字符串,token中的声明信息包含用户手机号, 向邮箱中发送一个url链接(http://域名/resetpwd?token=生成的token字符串),当进入resetpwd接口时,要判断token合法性(30分钟内,有手机号,检查黑名单),
- 使用token来保存用户登录状态信息:
用户登录–>登录成功后由服务器生成1周有效的token字符串,token中含有用户名信息。把token发送至客户端(浏览器,android)–>客户端把token保存本地浏览器(localstorage)–>以后所有请求都带token发送服务端–>服务端解析token合法性–>服务端还要检测token剩余有效时间,去刷新生成新的token
0.在CorsFilter过滤器中配置exposedHeaders=“token”
<property name="exposedHeaders" value="token"></property><!--暴露的响应头-->
1.登录成功后,生成token,放在响应头返回客户端
token的隐患:
一旦服务器签发token,在有效期内如果token泄露,就可以使用tonken伪装登录系统。即使注销登录仍然有问题。注销后服务端维护token黑名单列表。
其它:
对称加密(加密密钥与解密密钥相同):明文信息+加密密钥+加密算法=密文信息 密文信息+解密密钥+解密算法=明文信息
非对称加密(加密密钥与解密密钥不同):明文信息+加密密钥+加密算法=密文信息 密文信息+解密密钥+解密算法=明文信息 (https协议中采用非对称加密)
http:用户请求–服务端接收数据-逻辑处理-服务器返回数据–用户接收
https:需要在tomcat下部署ssl证书(非对称的公钥),浏览器先去服务器拿去ssl证书到本地,安装浏览器。
发起请求,把请求数据按照公钥进行加密,服务端收数据,按照私钥进行解密;逻辑处理返回数据;返回数据按照私钥加密,发送客户端,客户端浏览器拿公钥解密。
最后
以上就是魁梧蜻蜓为你收集整理的1.12. token工具12.token工具的全部内容,希望文章能够帮你解决1.12. token工具12.token工具所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复