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 使用 nimbus-jose-jwt 进行解码】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();}}上面的测试代码 , 将会有下面的输出内容:
17:43:24.431 [main] DEBUG com.ossez.jwt.JWTTest - roles - ["3343f157-c768-4b31-95ad-3f81487914d1","0e287
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- QuestMobile|QuestMobile:百度智能小程序月人均使用个数达9.6个
- 轻松|使用 GIMP 轻松地设置图片透明度
- 电池容量|Windows 自带功能查看笔记本电脑电池使用情况,你的容量还好吗?
- 撕破脸|使用华为设备就罚款87万,英政府果真要和中国“撕破脸”?
- 冲突|智能互联汽车:通过数据托管模式解决数据使用方面的冲突
- 鼓励|(经济)商务部:鼓励引导商务领域减少使用塑料袋等一次性塑料制品
- 机身|轻松使用一整天,OPPO K7x给你不断电体验
- 屏幕|一台realmeq2的两天使用体验
