Skip to content

Commit abcc995

Browse files
author
Gerald Unterrainer
committed
save tenant in context and json for UserAccess-interceptors
1 parent bf354e3 commit abcc995

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

Diff for: src/main/java/info/unterrainer/commons/httpserver/accessmanager/HttpAccessManager.java

+16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.net.http.HttpRequest;
99
import java.net.http.HttpResponse.BodyHandlers;
1010
import java.security.PublicKey;
11+
import java.util.HashSet;
1112
import java.util.Set;
1213
import java.util.function.Consumer;
1314

@@ -170,6 +171,7 @@ private TokenVerifier<AccessToken> persistUserInfoInContext(final Context ctx) {
170171

171172
String tenant = (String) token.getOtherClaims().get("tenant");
172173
ctx.attribute(Attribute.USER_CLIENT_ATTRIBUTE_TENANT, tenant);
174+
ctx.attribute(Attribute.USER_TENANT_SET, createTenantSetFrom(tenant));
173175

174176
Set<String> clientRoles = Set.of();
175177
String key = token.getIssuedFor();
@@ -215,6 +217,20 @@ private TokenVerifier<AccessToken> persistUserInfoInContext(final Context ctx) {
215217
}
216218
}
217219

220+
private Object createTenantSetFrom(final String tenant) {
221+
Set<String> tenantSet = new HashSet<>();
222+
if (tenant == null || tenant.isBlank())
223+
return tenantSet;
224+
225+
String[] tenants = tenant.split(",");
226+
for (String t : tenants) {
227+
if (t.isBlank())
228+
continue;
229+
tenantSet.add(t.trim());
230+
}
231+
return tenantSet;
232+
}
233+
218234
private void setTokenRejectionReason(final Context ctx, final String reason) {
219235
ctx.attribute(Attribute.KEYCLOAK_TOKEN_REJECTION_REASON, reason);
220236
}

Diff for: src/main/java/info/unterrainer/commons/httpserver/enums/Attribute.java

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class Attribute {
1616
public static final String USER_CLIENT_ROLES = "user_client_roles";
1717
public static final String USER_REALM_ROLES = "user_realm_roles";
1818
public static final String USER_CLIENT_ATTRIBUTE_TENANT = "user_client_attribute_tenant";
19+
public static final String USER_TENANT_SET = "user_tenant_set";
1920

2021
public static final String KEYCLOAK_TOKEN_REJECTION_REASON = "kc_token_rejection_reason";
2122
}

0 commit comments

Comments
 (0)