JWT令牌解析及刷新令牌(十一) | 您所在的位置:网站首页 › steam令牌会过期吗 › JWT令牌解析及刷新令牌(十一) |
写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️,满足一下我的虚荣心💖🙏🙏🙏 。 上一篇记录了使用jwt令牌和自定义token携带的信息,本篇继续完善一下令牌的解析和使用refresh_token获取令牌,本篇代码基于上一篇:使用Spring Security OAuth2使用JWT生成token及自定义token携带的信息(十) 目录 Java解析JWT内容 pom依赖 测试类 Postman测试 刷新令牌 环境 Postman测试 Java解析JWT内容这里我们使用jjwt的工具包解析JWT的内容。 pom依赖 io.jsonwebtoken jjwt 0.9.0 测试类 @GetMapping(value = "/jwt") public Object jwt(HttpServletRequest request) { String authorization = request.getHeader("Authorization"); return Jwts.parser() .setSigningKey("abc123".getBytes(StandardCharsets.UTF_8)) .parseClaimsJws(authorization) .getBody(); } Postman测试启动我们之前的认证服务和测试服务。 首先,获取token,如下: localhost:9005/oauth/token?client_id=dev-client&client_secret=123456&grant_type=password&username=zhangsan&password=123456 结果如下: 然后,我们访问JWT解析测试方法 http://localhost:9000/jwt,如下: 结果如下: 如上,已经JWT的内容已经解析出来了。 刷新令牌下面演示一下token失效时使用refresh_toekn重新获取token的过程。 环境我们的客户端信息是保存在数据库的,要想支持刷新令牌,注意oauth_client_details表中authorized_grant_types要包含refresh_token,另外,之前令牌的有效期和刷新令牌的有效期是配置在令牌服务中的,如下: tokenServices.setAccessTokenValiditySeconds(60); tokenServices.setRefreshTokenValiditySeconds(3600);这里咱们配置在数据库oauth_client_details表中,后续客户端信息会做一个管理功能来维护这些信息,为了演示,这里还将令牌有效期设置为30秒,刷新令牌的有效期设置为3600秒,如下: 使用上面的token再次访问 访问JWT解析测试方法 http://localhost:9000/jwt,结果如下: 后台报错信息如下: io.jsonwebtoken.ExpiredJwtException: JWT expired at 2023-03-09T09:56:55Z. Current time: 2023-03-09T10:08:47Z, a difference of 712101 milliseconds. Allowed clock skew: 0 milliseconds. 如上,JWT expired,使用refresh_token重新获取token,如下: 结果如下: 使用新获取的access_token再次访问 JWT解析测试方法 http://localhost:9000/jwt,就可以在再次访问了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |