У меня возникли проблемы с доступом к вложенным запросам из JWT с помощью jose4j. У меня есть JWT, множество претензий выглядит следующим образом:Доступ к JWT вложенным претензиям с jose4j
{
"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
как Map<String,Object>
и вытащить каждое требование из этого объекта. Другой вариант - использовать flattenClaims
, чтобы сгладить все претензии в Map<String,List<Object>>
и захватить первый объект с карты для вложенных претензий.
Ни один из этих вариантов не выглядит особенно упругим, если служба, предоставляющая эти JWT, очень сильно изменяет схему.
Есть ли лучший способ?