我无法使用 jose4j 从 JWT 访问嵌套声明。我有一个 JWT,其声明集如下所示:
{
"iss": "awesome.issuer",
"iat": 1300819370,
"exp": 1300819380,
"clm": "string claim",
"sub": "batman",
"context": {
"username": "mpdavis",
"firstName": "Michael",
"lastName": "Davis
}
}
当我尝试访问声明中的嵌套声明时,我遇到了问题context
。我可以使用getClaimValue
.
private String qsh;
qsh = jwtClaims.getClaimValue("qsh", String.class);
如果我想获得嵌套声明,我似乎有两个选择。
第一种选择是找到一种方法将context
声明作为 a返回Map<String,Object>
并将每个声明从该对象中提取出来。另一个选项是使用flattenClaims
将所有声明展平为 aMap<String,List<Object>>
并从地图中抓取第一个对象以用于嵌套声明。
如果授予这些 JWT 的服务对架构进行了很大的更改,那么这些选项中的任何一个都不会显得特别有弹性。
有没有更好的办法?