Single sign on 如何在KeyClope中初始化多个用户提供程序
当我试图使keydeport使用在keydeport(包:org.keydeport.models.JPA.JpaUserProviderFactory)中实现的默认JPA提供程序时,遇到了很大的困难 还有我的自定义用户提供者 我的用户提供程序的实现方式如下:Single sign on 如何在KeyClope中初始化多个用户提供程序,single-sign-on,keycloak,keycloak-services,Single Sign On,Keycloak,Keycloak Services,当我试图使keydeport使用在keydeport(包:org.keydeport.models.JPA.JpaUserProviderFactory)中实现的默认JPA提供程序时,遇到了很大的困难 还有我的自定义用户提供者 我的用户提供程序的实现方式如下: public class MyCustomUserProviderFactory extends JpaUserProviderFactory { @Override public String getId() { ret
public class MyCustomUserProviderFactory extends JpaUserProviderFactory {
@Override
public String getId() {
return "demo";
}
@Override
public UserProvider create(KeycloakSession session) {
EntityManager em = session.getProvider(JpaConnectionProvider.class).getEntityManager();
return new MyCustomUserProvider(session, em);
}
}
和MyCustomUserProvider
public class MyCustomUserProvider extends JpaUserProvider {
private final KeycloakSession session;
public MyCustomUserProvider(KeycloakSession session, EntityManager em) {
super(session, em);
this.session = session;
}
}
startup.cli
/subsystem=keycloak-server/spi=user:add(default-provider=demo)
/subsystem=keycloak-server/spi=user/provider=jpa:add(enabled=true)
/subsystem=keycloak-server/spi=user/provider=demo:add(enabled=true)
我也有META-INF/service
org.keydape.models.UserProviderFactory
使用com.demo.keydrope.providers.user.MyCustomUserProviderFactory
因此,通过这个实现和设置,keydepot成功启动,但是当我需要访问demo和jpa UserProvider时,我只会得到默认的provider,在这个示例中就是demo
我通过以下方式访问UserProvider:
UserProvider demoProvider = session.getProvider(UserProvider.class, "demo");
但如果我执行
UserProvider jpaProvider = session.getProvider(UserProvider.class, "jpa");
我只得到空值。
如果我在startup.cli(default provider=demo)中更改默认提供程序,那么我将获得jpa,而不是demo提供程序
有人能向我解释一下,我怎么能有几个UserProvider实现,我怎么能访问它们?你确定更改应用于standalone.xml吗?我没有standalone.xml,我有一些模块,在这些模块中实现了提供程序,并且模块在wildfly上作为jar部署。此更改应用于KeyClope,但似乎您不能有多个用户提供程序。通常,您可以定义多个提供程序。似乎您的startup cli provider语句总是在它之前被压碎。当您说cli语句被压碎是什么意思?一切都正常运行,keydove正在工作,但是当我想要访问这两个提供者时,我只能访问默认的提供者,而另一个提供者不存在,并且在我看来,它并没有被keydove实例化。