我正在为 Keycloak 编写自定义身份验证 SPI。要验证 cookie,我想使用 keycloak-services 的 AuthenticationManager。我在项目中添加了 keycloak-services 作为 maven 依赖项。它没有给出任何编译错误,但是在 Keycloak 上部署 SPI 后,它把我抛到了异常之下。
这是例外:
错误 [org.keycloak.services.error.KeycloakErrorHandler](默认任务 68)未捕获的服务器错误:java.lang.NoClassDefFoundError: org/keycloak/services/managers/AuthenticationManager 在 org.keycloak.examples.authenticator.SecretQuestionAuthenticator.authenticate( SecretQuestionAuthenticator.java:102) 在 org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:200) 在 org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:853) 在 org.keycloak.authentication.AuthenticationProcessor.authenticate (AuthenticationProcessor.java:722) 在 org.keycloak.protocol.AuthorizationEndpointBase.handleBrowserAuthenticationRequest(AuthorizationEndpointBase.java:145) 在 org.keycloak.protocol.oidc.endpoints。AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:395) 在 org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:139)
Maven 依赖
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi-private</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>