52 final ObjectNode node = MAPPER.createObjectNode();
54 putString(node,
"sub", claims.subject());
55 putString(node,
"iss", claims.issuer());
56 putArray(node,
"aud", claims.audience());
57 putInstant(node,
"iat", claims.issuedAt());
58 putInstant(node,
"exp", claims.expiresAt());
59 putInstant(node,
"nbf", claims.notBefore());
60 putString(node,
"jti", claims.jwtId());
62 putArray(node,
"roles", claims.roles());
63 if (claims.tokenType() !=
null) {
64 node.put(
"token_type", claims.tokenType().claimValue());
66 putString(node,
"client_id", claims.clientId());
68 for (
final Map.Entry<String, Object> entry : claims.extras().entrySet()) {
69 node.set(entry.getKey(), MAPPER.valueToTree(entry.getValue()));
75 final Map<String, Object> allClaims = MAPPER.convertValue(payload,
new TypeReference<>() {
77 final Map<String, Object> extras =
new LinkedHashMap<>(allClaims);
78 extras.keySet().removeIf(ClaimsMapper::isKnownClaim);
80 final String
tokenTypeRaw = asText(payload.get(
"token_type"));
81 return TokenClaims.
builder().subject(asText(payload.get(
"sub"))).issuer(asText(payload.get(
"iss")))
82 .audience(readStringList(payload.get(
"aud"))).issuedAt(asInstant(payload.get(
"iat")))
83 .expiresAt(asInstant(payload.get(
"exp"))).notBefore(asInstant(payload.get(
"nbf")))
84 .jwtId(asText(payload.get(
"jti"))).roles(readStringList(payload.get(
"roles")))
86 .clientId(asText(payload.get(
"client_id"))).extras(extras).build();