我正在为 keycloak 编写一个身份验证器提供程序,我将其打包为.jar. 一旦它使用来自 keycloak-services 的类,我就会得到一个NoClassDefFoundError. 通过“ mvn wildfly:deploy”部署提供程序时,我遇到了同样的错误。
我一定遗漏了一些东西,但我很少编写 Java 代码,而且我现在一无所知。
我在 pom.xml 中定义了依赖项,并尝试将 'provided' 和 'compile' 作为范围:
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi-private</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
<version>3.1.4.GA</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
将以下代码添加到身份验证函数后,我立即收到错误消息:
AuthenticationSessionModel authSession = context.getAuthenticationSession();
SerializedBrokeredIdentityContext serializedCtx =
SerializedBrokeredIdentityContext.readFromAuthenticationSession(
authSession, "BROKERED_CONTEXT");
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
20:05:03,844 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-6) Uncaught server error: java.lang.NoClassDefFoundError: org/keycloak/authentication/authenticators/broker/util/SerializedBrokeredIdentityContext
Run Code Online (Sandbox Code Playgroud) 我正在使用 Kyecloak:4.8.0,并为我的领域启用了暴力攻击。现在,每当用户提供错误凭据 3 次时,用户将被暂时锁定。
但用户仍然会看到“无效的用户名/密码”。
根据此线程,Keycloak 有意这样做: https ://issues.jboss.org/browse/KEYCLOAK-5284
但我仍然想向用户表明他的帐户已被锁定。
有什么办法可以自定义此消息吗?
我尝试通过在自定义 keycloak 主题中添加消息来实现此目的,如下所示:
位置:themes\adminlte\login\messages\messages_en.properties
accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later.
Run Code Online (Sandbox Code Playgroud)
这个改变是行不通的。