use of org.apereo.portal.soffit.model.v1_0.Bearer in project uPortal by Jasig.
the class BearerService method parseBearerToken.
public Bearer parseBearerToken(String bearerToken) {
final Jws<Claims> claims = parseEncrypteToken(bearerToken, Bearer.class);
final String username = claims.getBody().getSubject();
final Map<String, List<String>> attributes = new HashMap<>();
for (Map.Entry<String, Object> y : claims.getBody().entrySet()) {
final String key = y.getKey();
if (JwtClaims.forName(key) != null) {
// Skip these; we handle these differently
continue;
}
if (y.getValue() instanceof List) {
@SuppressWarnings("unchecked") final List<String> values = (List<String>) y.getValue();
attributes.put(key, values);
} else if (y.getValue() instanceof String) {
// Convert (back) to a single-item list
final String value = (String) y.getValue();
attributes.put(key, Collections.singletonList(value));
}
}
@SuppressWarnings("unchecked") final List<String> groups = (List<String>) claims.getBody().get(JwtClaims.GROUPS.getName());
Bearer rslt = new Bearer(bearerToken, username, attributes, groups);
logger.debug("Produced the following Bearer for user '{}': {}", username, rslt);
return rslt;
}
Aggregations