我正在为 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>
我一旦将以下代码添加到authenticate函数中,就会收到错误信息:
AuthenticationSessionModel authSession = context.getAuthenticationSession();
SerializedBrokeredIdentityContext serializedCtx =
SerializedBrokeredIdentityContext.readFromAuthenticationSession(
authSession, "BROKERED_CONTEXT");
我遇到的错误:
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