找不到 Keycloak 提供程序

我有一个 Keycloak 4.2.1 服务器,我正在尝试为它实现一个自定义的“LoginFormsProvider”。我的目标是使用附加组件扩展到登录页面(freemarker),在我的例子中是一个简单的信息框。我想在 Provider 类中设置的那个框的内容。


我已经实现了另外两个自定义提供程序,它们运行良好(UserStorageProvider 和 EventListenerProvider)。所以我的 .jar 文件被服务器找到了。


但是我对“LoginFormsProvider”有问题。服务器找不到提供者。请参阅下面的堆栈跟踪...


我在“META-INF/services”路径中添加了一个文件“org.keycloak.login.LoginFormsProviderFactory”,包和类名“de.test.login.TestLoginFactory”(不带引号)。


这导致了我的提供者的工厂类。就像我为其他提供商所做的那样。


我的 FactoryClass 看起来像这样:


package de.test.login;


import java.util.LinkedHashMap;

import java.util.Map;


import org.jboss.logging.Logger;

import org.keycloak.Config.Scope;

import org.keycloak.freemarker.FreeMarkerUtil;

import org.keycloak.login.LoginFormsProvider;

import org.keycloak.login.LoginFormsProviderFactory;

import org.keycloak.models.KeycloakSession;

import org.keycloak.models.KeycloakSessionFactory;

import org.keycloak.provider.ServerInfoAwareProviderFactory;


public class TestLoginFactory  implements  LoginFormsProviderFactory{


    private FreeMarkerUtil freeMarker;

    private final static String PROVIDER = "test-login-provider";


    @Override

    public LoginFormsProvider create(KeycloakSession session) {

        return new TestLoginProvider(session, freeMarker);

    }


    @Override

    public void init(Scope config) {        

        freeMarker = new FreeMarkerUtil();

    }


    @Override

    public void postInit(KeycloakSessionFactory factory) {

    }


    @Override

    public void close() {

        freeMarker = null;

    }


    @Override

    public String getId() {

        return PROVIDER;

    }


}

这里是 Provider 类:


package de.test.login;


import javax.ws.rs.core.Response;


import org.jboss.logging.Logger;

import org.keycloak.freemarker.FreeMarkerUtil;

import org.keycloak.login.freemarker.FreeMarkerLoginFormsProvider;

import org.keycloak.models.KeycloakSession;


繁星点点滴滴
浏览 226回答 1
1回答

胡说叔叔

你使用什么版本的keycloak?如果它是更高版本(1.x 以上)之一,那么您似乎在类中使用了“错误”的导入语句。请尝试更新所有必要的依赖项,看看这是否可行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java