Невозможно зарегистрировать пользовательский поставщик пользовательских хранилищ в KeyCloakJAVA

Программисты JAVA общаются здесь
Anonymous
Невозможно зарегистрировать пользовательский поставщик пользовательских хранилищ в KeyCloak

Сообщение Anonymous »

Я использую keycloak 26.1.3 в контейнере Docker
Я хочу применить свой пользовательский поставщик данных пользователя
У меня есть CustomuseStorageProvider.java

Код: Выделить всё

package com.my_app.user_provider;

import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.storage.UserStorageProvider;
import org.keycloak.storage.user.UserLookupProvider;

public class CustomUserStorageProvider implements UserStorageProvider, UserLookupProvider {
private final KeycloakSession session;

public CustomUserStorageProvider(final KeycloakSession session) {
this.session = session;
}

@Override
public UserModel getUserById(final RealmModel realmModel, final String s) {
return null;
}

@Override
public UserModel getUserByUsername(final RealmModel realmModel, final String s) {
UserModel user = session.users().getUserByUsername(realmModel, s);

// Just overwriting the email to check if it works
user.setSingleAttribute("email", "test-email@himls.com");

return user;
}

@Override
public UserModel getUserByEmail(final RealmModel realmModel, final String s) {
return null;
}

@Override
public void close() {

}

}

и CustomUserTorgeProviderFactory

Код: Выделить всё

package com.my_app.user_provider;

import org.keycloak.component.ComponentModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.storage.UserStorageProviderFactory;

public class CustomUserStorageProviderFactory implements UserStorageProviderFactory {

@Override
public CustomUserStorageProvider create(final KeycloakSession session, final ComponentModel model) {
return new CustomUserStorageProvider(session);
}

@Override
public String getId() {
return "custom-user-storage-provider";
}
}
У меня также есть Meta-Inf/services/org.keycloak.storage.userstorageProviderFactory file

Код: Выделить всё

com.my_app.user_provider.CustomUserStorageProviderFactory
< /code>
Я создал jar < /p>
mvn clean package
< /code>
скопировал его в контейнер Docker < /p>
docker cp target/my-app-1.0-SNAPSHOT.jar keycloak:/opt/keycloak/providers/
< /code>
и перезапустил контейнер < /p>
В журналах контейнеров я не вижу никаких признаков того, что мой пользовательский поставщик был зарегистрирован < /p>
025-03-07 20:50:53 2025-03-07 18:50:53,811 INFO  [com.arjuna.ats.jbossatx] (Shutdown thread) ARJUNA032014: Stopping transaction recovery manager
2025-03-07 20:50:53 2025-03-07 18:50:53,837 INFO  [io.quarkus] (Shutdown thread) Keycloak stopped in 0.093s
2025-03-07 20:50:55 Running the server in development mode. DO NOT use this configuration in production.
2025-03-07 20:50:56 2025-03-07 18:50:56,727 INFO  [org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory] (ForkJoinPool.commonPool-worker-1) Starting Infinispan embedded cache manager
2025-03-07 20:50:56 2025-03-07 18:50:56,806 INFO  [org.infinispan.CONTAINER] (ForkJoinPool.commonPool-worker-1) Virtual threads support enabled
2025-03-07 20:50:56 2025-03-07 18:50:56,934 INFO  [org.infinispan.CONTAINER] (ForkJoinPool.commonPool-worker-1) ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller'
2025-03-07 20:50:57 2025-03-07 18:50:57,446 INFO  [org.keycloak.broker.provider.AbstractIdentityProviderMapper] (main) Registering class org.keycloak.broker.provider.mappersync.ConfigSyncEventListener
2025-03-07 20:50:57 2025-03-07 18:50:57,461 INFO  [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: node_809063, Site name: null
2025-03-07 20:50:58 2025-03-07 18:50:58,028 WARN  [io.agroal.pool] (main) Datasource '': JDBC resources leaked: 1 ResultSet(s) and 0 Statement(s)
2025-03-07 20:50:58 2025-03-07 18:50:58,119 INFO  [io.quarkus] (main) Keycloak 26.1.3 on JVM (powered by Quarkus 3.15.3.1) started in 3.305s. Listening on: http://0.0.0.0:8080
2025-03-07 20:50:58 2025-03-07 18:50:58,119 INFO  [io.quarkus] (main) Profile dev activated.
2025-03-07 20:50:58 2025-03-07 18:50:58,119 INFO  [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, narayana-jta, opentelemetry, reactive-routes, rest, rest-jackson, smallrye-context-propagation, vertx]
Я также вижу, что атрибут электронной почты принципала аутентификации не был перезаписан.
Итак, я предполагаю, что мой пользовательский поставщик данных пользователя не был зарегистрирован.
Что мне делать неправильно?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... n-keycloak

Вернуться в «JAVA»