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
推荐阅读
- Biogen将使用Apple Watch研究老年痴呆症的早期症状
- Eyeware Beam使用iPhone追踪玩家在游戏中的眼睛运动
- 或使用天玑1000+芯片?荣耀V40已全渠道开启预约
- 苹果将推出使用mini LED屏的iPad Pro
- 手机能用多久?如果出现这3种征兆,说明“默认使用时间”已到
- 苹果有望在2021年初发布首款使用mini LED显示屏的 iPad Pro
- 笔记本保养有妙招!学会这几招笔记本再战三年
- 数据可视化三节课之二:可视化的使用
- 索尼sw77与sw55的使用差别感受
- 爆料称一加9系列与潜望式镜头无缘 继续使用普通长焦