JWT 使用 nimbus-jose-jwt 进行解码
在程序中获得 JWT 的Token 代码后 , 可以对 JWT 进行解码 。
常用的可以使用 OAuth0 提供的解码包 , 你也可能会使用 nimbus-jose-jwt 包 。
Maven 配置参数为:
首先你需要有准确可以解码的 JWT 。
然后将这个 JWT 转换为 SignedJWT
SignedJWT sjwt = SignedJWT.parse(token);
然后你可以使用下面的代码获得所有的 claims 。 nimbus-jose-jwt 返回的结果是 set 。 随后你就可以根据返回的 Set 去查询你需要的内容了 。
请注意 , 有时候返回的内容可能是不同的数据格式 , 你可能需要转换 。
比如说我们这里是 roles , nimbus-jose-jwt 返回的是 JSONArray 。
如果你不能确定返回的 set 存储的是什么数据类型 , 你可以使用 IJ 的调试窗口看看 , 就知道怎么去定义数据类型了 。
文章插图
JWT-bus-01476×588 24.4 KB
如这个例子 , 我们使用的 JWT 通过查看为下面的情况 。
文章插图
JWT-bus-021265×931 174 KB
我们需要返回 roles 的结构 , 因此我们需要转换为 JSONArray 数据类型 。
完整的测试代码为:
@Testpublic void claimsValueTest() {String token = "eyJ0eXAiOiJKV1Qi"; // Change your Tokentry {SignedJWT sjwt = SignedJWT.parse(token);JWTClaimsSet claims = sjwt.getJWTClaimsSet();JSONArray groups = (JSONArray) claims.getClaim("roles");logger.debug("roles - {}", groups.toJSONString());} catch (Exception e) {e.printStackTrace();}}
上面的测试代码 , 将会有下面的输出内容:
【JWT 使用 nimbus-jose-jwt 进行解码】17:43:24.431 [main] DEBUG com.ossez.jwt.JWTTest - roles - ["3343f157-c768-4b31-95ad-3f81487914d1","0e287
- 使用半监督学习从研究到产品化的3个教训
- 企业建站使用服务器好还是虚拟主机好?
- OAUTH.令牌存储介绍以及JWT实现强制登出、登录个数控制
- 如何使用 lshw 查看 Linux 设备信息
- 低调使用!超级好用的ePub阅读工具!|PC软件
- 世界上第一台计算机是什么?为什么使用二进制而不是十进制?
- 网络安全:如何使用MSFPC半自动化生成强大的木码?「下集」
- 使用手机,体现着一个人的修养涵养
- 亲自使用一周,华为Mate20 Pro是否值得入手?
- ipad一直插电使用好吗?