无法在Keycloak身份验证SPI

时间:2018-02-16 07:05:34

标签: keycloak keycloak-services

我正在为Keycloak编写自定义身份验证SPI。 要验证cookie,我想使用keycloak-services的AuthenticationManager。我已将keycloak-services添加为项目中的maven依赖项。它没有给出任何编译错误,但在Keycloak上部署SPI之后,它将我置于异常之下。

以下是例外:

  

错误[org.keycloak.services.error.KeycloakErrorHandler](默认   task-68)未捕获的服务器错误:java.lang.NoClassDefFoundError:   组织/ keycloak /服务/管理/ AuthenticationManager会           at org.keycloak.examples.authenticator.SecretQuestionAuthenticator.authenticate(SecretQuestionAuthenticator.java:102)           at org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:200)           at org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:853)           at org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:722)           at org.keycloak.protocol.AuthorizationEndpointBase.handleBrowserAuthenticationRequest(AuthorizationEndpointBase.java:145)           at 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>

1 个答案:

答案 0 :(得分:0)

事实证明,我部署代码的方式导致了问题。我正在使用

在Keycloak上部署代码
mvn clean install wildfly:deploy

当我们使用上面的命令部署代码时,它无法在keycloak上下文中加载jar文件。 为了使其工作,我们必须使用Keycloak SPI中提到的模块结构来部署代码。 当我们使用模块方法部署代码时,我们可以在新创建的模块的module.xml文件中添加依赖项,然后可以在代码中使用它。