74 throw new ErrorResponseException(
"invalid_bearer_token",
"Could not obtain bearer access_token from request.", Status.FORBIDDEN);
77 throw new ErrorResponseException(
"no_keycloak_session",
"No keycloak session", Status.FORBIDDEN);
80 throw new ErrorResponseException(
"no_keycloak_session",
"No realm set", Status.FORBIDDEN);
85 Map<String, Collection<String>>
attributes =
new HashMap<>();
88 ObjectNode objectNode = JsonSerialization.createObjectNode(token);
89 Iterator<String> iterator = objectNode.fieldNames();
91 while (iterator.hasNext()) {
92 String fieldName = iterator.next();
93 JsonNode fieldValue = objectNode.get(fieldName);
94 List<String> values =
new ArrayList<>();
96 if (fieldValue.isArray()) {
97 Iterator<JsonNode> valueIterator = fieldValue.iterator();
99 while (valueIterator.hasNext()) {
100 values.add(valueIterator.next().asText());
103 String value = fieldValue.asText();
105 if (StringUtil.isNullOrEmpty(value)) {
112 if (!values.isEmpty()) {
113 attributes.put(fieldName, values);
117 if (token instanceof AccessToken) {
123 if (userSession == null) {
124 userSession = sessions.getOfflineUserSession(
realm, token.getSessionState());
128 AuthenticatedClientSessionModel clientSessionModel = userSession.getAuthenticatedClientSessions().get(client.getId());
130 ClientSessionContext clientSessionCtx = DefaultClientSessionContext.fromClientSessionScopeParameter(clientSessionModel);
136 if (realmAccess != null) {
137 attributes.put(
"kc.realm.roles", realmAccess.getRoles());
142 if (resourceAccess != null) {
143 resourceAccess.forEach((clientId, access) -> attributes.put(
"kc.client." + clientId +
".roles", access.getRoles()));
145 }
catch (Exception e) {
146 throw new RuntimeException(
"Error while reading attributes from security token.", e);
149 this.attributes = Attributes.from(attributes);
final RealmModel realm
Definition: KeycloakIdentity.java:60
ClientModel getClientByClientId(String clientId)
final AccessToken accessToken
Definition: KeycloakIdentity.java:59
final Attributes attributes
Definition: KeycloakIdentity.java:62
final KeycloakSession keycloakSession
Definition: KeycloakIdentity.java:61
UserSessionModel getUserSession(RealmModel realm, String id)
Definition: AccessToken.java:37
Access()
Definition: AccessToken.java:43
Access getRealmAccess()
Definition: AccessToken.java:230
UserSessionProvider sessions()
Map< String, Access > getResourceAccess()
Definition: AccessToken.java:137