我有一个 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;
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
你使用什么版本的keycloak?如果它是更高版本(1.x 以上)之一,那么您似乎在类中使用了“错误”的导入语句。
请尝试更新所有必要的依赖项,看看这是否可行。
添加回答
举报
0/150
提交
取消