我有一個 Keycloak 4.2.1 服務(wù)器,我正在嘗試為它實現(xiàn)一個自定義的“LoginFormsProvider”。我的目標是使用附加組件擴展到登錄頁面(freemarker),在我的例子中是一個簡單的信息框。我想在 Provider 類中設(shè)置的那個框的內(nèi)容。我已經(jīng)實現(xiàn)了另外兩個自定義提供程序,它們運行良好(UserStorageProvider 和 EventListenerProvider)。所以我的 .jar 文件被服務(wù)器找到了。但是我對“LoginFormsProvider”有問題。服務(wù)器找不到提供者。請參閱下面的堆棧跟蹤...我在“META-INF/services”路徑中添加了一個文件“org.keycloak.login.LoginFormsProviderFactory”,包和類名“de.test.login.TestLoginFactory”(不帶引號)。這導(dǎo)致了我的提供者的工廠類。就像我為其他提供商所做的那樣。我的 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條經(jīng)驗 獲得超8個贊
你使用什么版本的keycloak?如果它是更高版本(1.x 以上)之一,那么您似乎在類中使用了“錯誤”的導(dǎo)入語句。
請嘗試更新所有必要的依賴項,看看這是否可行。
添加回答
舉報
0/150
提交
取消