Anonymous
Warum fügt Quarkus-KeyCloak-Admin-Client keine Attribute zum Benutzer hinzu?
Post
by Anonymous » 28 Mar 2025, 11:25
In einer Quarkus -Anwendung versuche ich, Tests mit KeyCloak Dev Service -Integration mit diesen Requisiten zu automatisieren: < /p>
Code: Select all
%test.quarkus.oidc.enabled=true
%test.quarkus.keycloak.devservices.enabled=true
%test.quarkus.keycloak.devservices.realm-path=quarkus-realm.json
< /code>
Und diese Abhängigkeiten: < /p>
implementation 'io.quarkus:quarkus-oidc'
implementation 'io.quarkus:quarkus-oidc-client'
implementation("io.quarkus:quarkus-keycloak-admin-client")
wobei der Quarkus-realm.json folgt:
Code: Select all
{
"realm": "quarkus",
"enabled": true,
"groups": [
{
"name": "AziendaXXX"
},
{
"name": "AziendaYYY"
}
],
"users": [
{
"username": "alice",
"enabled": true,
"emailVerified": true,
"firstName": "Alice",
"lastName": "Wonderland",
"credentials": [
{
"type": "password",
"value": "alice"
}
],
"clientRoles": {
"realm-management": [
"view-clients",
"manage-users",
"view-users"
],
"front-end": [
"ADMIN"
]
},
"groups": [
"/AziendaXXX",
"/AziendaYYY"
],
"attributes": {
"phoneNumber": "1234567890",
"profilePic": "alice-pic-base64",
"authType": "keycloak"
}
},
{
"username": "bob",
"enabled": true,
"emailVerified": true,
"firstName": "Bob",
"lastName": "Builder",
"credentials": [
{
"type": "password",
"value": "bob"
}
],
"clientRoles": {
"realm-management": [
"view-clients",
"manage-users",
"view-users"
],
"front-end": [
"ADMIN"
]
},
"groups": [
"/AziendaXXX"
],
"attributes": {
"phoneNumber": "0987654321",
"profilePic": "bob-pic-base64",
"authType": "keycloak"
}
}
],
"clients": [
{
"clientId": "back-end",
"enabled": true,
"secret": "xxx",
"clientAuthenticatorType": "client-secret",
"redirectUris": [
"*"
],
"webOrigins": [
"*"
],
"publicClient": false,
"protocol": "openid-connect",
"serviceAccountsEnabled": true,
"directAccessGrantsEnabled": true
},
{
"clientId": "front-end",
"enabled": true,
"publicClient": true,
"protocol": "openid-connect",
"redirectUris": [
"*"
],
"webOrigins": [
"*"
],
"directAccessGrantsEnabled": true,
"standardFlowEnabled": true,
"implicitFlowEnabled": false,
"serviceAccountsEnabled": false,
"protocolMappers": [
{
"name": "roles",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-client-role-mapper",
"consentRequired": false,
"config": {
"multivalued": "true",
"userinfo.token.claim": "true",
"id.token.claim": "true",
"access.token.claim": "true",
"claim.name": "roles",
"jsonType.label": "String",
"client.id": "front-end"
}
},
{
"name": "groups-to-aziende",
"protocol": "openid-connect",
"protocolMapper": "oidc-group-membership-mapper",
"consentRequired": false,
"config": {
"claim.name": "aziende",
"full.path": "false",
"id.token.claim": "true",
"access.token.claim": "true",
"userinfo.token.claim": "true"
}
}
]
}
],
"roles": {
"client": {
"front-end": [
{
"name": "ADMIN",
"description": "",
"composite": false,
"clientRole": true
}
]
}
}
}
< /code>
Wenn ich einen vorhandenen Benutzer (Alice oder Bob) erhalte, werden die Attribute korrekt angezeigt, aber wenn ich versuche, einen neuen Benutzer zu erstellen und die Attribute mit dieser Methode zu aktualisieren: < /p>
private void setUserAttributes(String userId, Map attributes) {
UserResource userResource = keycloak.realm(realm).users().get(userId);
UserRepresentation user = userResource.toRepresentation();
if (attributes != null && !attributes.isEmpty()) {
user.setAttributes(attributes);
userResource.update(user);
}
}
Die Attribute des neuen Benutzers sind null.>
1743157542
Anonymous
In einer Quarkus -Anwendung versuche ich, Tests mit KeyCloak Dev Service -Integration mit diesen Requisiten zu automatisieren: < /p> [code]%test.quarkus.oidc.enabled=true %test.quarkus.keycloak.devservices.enabled=true %test.quarkus.keycloak.devservices.realm-path=quarkus-realm.json < /code> Und diese Abhängigkeiten: < /p> implementation 'io.quarkus:quarkus-oidc' implementation 'io.quarkus:quarkus-oidc-client' implementation("io.quarkus:quarkus-keycloak-admin-client") [/code] wobei der Quarkus-realm.json folgt: [code]{ "realm": "quarkus", "enabled": true, "groups": [ { "name": "AziendaXXX" }, { "name": "AziendaYYY" } ], "users": [ { "username": "alice", "enabled": true, "emailVerified": true, "firstName": "Alice", "lastName": "Wonderland", "credentials": [ { "type": "password", "value": "alice" } ], "clientRoles": { "realm-management": [ "view-clients", "manage-users", "view-users" ], "front-end": [ "ADMIN" ] }, "groups": [ "/AziendaXXX", "/AziendaYYY" ], "attributes": { "phoneNumber": "1234567890", "profilePic": "alice-pic-base64", "authType": "keycloak" } }, { "username": "bob", "enabled": true, "emailVerified": true, "firstName": "Bob", "lastName": "Builder", "credentials": [ { "type": "password", "value": "bob" } ], "clientRoles": { "realm-management": [ "view-clients", "manage-users", "view-users" ], "front-end": [ "ADMIN" ] }, "groups": [ "/AziendaXXX" ], "attributes": { "phoneNumber": "0987654321", "profilePic": "bob-pic-base64", "authType": "keycloak" } } ], "clients": [ { "clientId": "back-end", "enabled": true, "secret": "xxx", "clientAuthenticatorType": "client-secret", "redirectUris": [ "*" ], "webOrigins": [ "*" ], "publicClient": false, "protocol": "openid-connect", "serviceAccountsEnabled": true, "directAccessGrantsEnabled": true }, { "clientId": "front-end", "enabled": true, "publicClient": true, "protocol": "openid-connect", "redirectUris": [ "*" ], "webOrigins": [ "*" ], "directAccessGrantsEnabled": true, "standardFlowEnabled": true, "implicitFlowEnabled": false, "serviceAccountsEnabled": false, "protocolMappers": [ { "name": "roles", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-client-role-mapper", "consentRequired": false, "config": { "multivalued": "true", "userinfo.token.claim": "true", "id.token.claim": "true", "access.token.claim": "true", "claim.name": "roles", "jsonType.label": "String", "client.id": "front-end" } }, { "name": "groups-to-aziende", "protocol": "openid-connect", "protocolMapper": "oidc-group-membership-mapper", "consentRequired": false, "config": { "claim.name": "aziende", "full.path": "false", "id.token.claim": "true", "access.token.claim": "true", "userinfo.token.claim": "true" } } ] } ], "roles": { "client": { "front-end": [ { "name": "ADMIN", "description": "", "composite": false, "clientRole": true } ] } } } < /code> Wenn ich einen vorhandenen Benutzer (Alice oder Bob) erhalte, werden die Attribute korrekt angezeigt, aber wenn ich versuche, einen neuen Benutzer zu erstellen und die Attribute mit dieser Methode zu aktualisieren: < /p> private void setUserAttributes(String userId, Map attributes) { UserResource userResource = keycloak.realm(realm).users().get(userId); UserRepresentation user = userResource.toRepresentation(); if (attributes != null && !attributes.isEmpty()) { user.setAttributes(attributes); userResource.update(user); } } [/code] Die Attribute des neuen Benutzers sind null.>