使用Quarkus Keycloak Admin Client为新建用户设置属性不生效的问题求助
Quarkus Keycloak Admin Client为新建用户设置属性不生效的问题求助
我在Quarkus应用里尝试结合Keycloak开发服务来自动化测试,用了这些配置项:
%test.quarkus.oidc.enabled=true %test.quarkus.keycloak.devservices.enabled=true %test.quarkus.keycloak.devservices.realm-path=quarkus-realm.json
依赖是这些:
implementation 'io.quarkus:quarkus-oidc' implementation 'io.quarkus:quarkus-oidc-client' implementation("io.quarkus:quarkus-keycloak-admin-client")
我的quarkus-realm.json配置如下:
{ "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 } ] } } }
现在遇到了一个奇怪的问题:查询已有的用户(比如alice或者bob)时,他们的属性都能正常显示,但当我创建一个新用户,然后用下面的方法设置属性时,新用户的属性始终是null,就好像user.setAttributes(attributes);和userResource.update(user);这两行完全没起作用一样,这是怎么回事呢?
我的设置属性方法代码:
private void setUserAttributes(String userId, Map<String, List<String>> attributes) { UserResource userResource = keycloak.realm(realm).users().get(userId); UserRepresentation user = userResource.toRepresentation(); if (attributes != null && !attributes.isEmpty()) { user.setAttributes(attributes); userResource.update(user); } }
备注:内容来源于stack exchange,提问作者Kambei
相关产品推荐
相关产品推荐

