在Keycloak扩展中实现AbstractOAuth2IdentityProvider时出现NoClassDefFoundError

时间:2018-07-10 14:19:42

标签: keycloak keycloak-services

我尝试为Keycloak实现自定义OAuth社交登录提供程序。我的蓝图是密钥斗篷代码中Facobook social login privider的实现。

这是我的pom.xml:

<dependencies>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-core</artifactId>
        <version>${keycloak.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-server-spi</artifactId>
        <version>${keycloak.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-server-spi-private</artifactId>
        <version>${keycloak.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-services</artifactId>
        <version>${keycloak.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

我可以构建JAR文件并将其移至{KECLOAK_HOME}/standalone/deployments/。 JAR有一个org.keycloak.broker.social.SocialIdentityProviderFactory来注册我的提供程序,并被Keycloak识别。我可以在“身份提供者”下拉列表中看到我的新社交登录提供者。直到这一点一切都OK。

我的问题是,当我选择该提供程序时,出现以下日志错误:

14:01:35,759 WARN  [org.jboss.modules] (default task-11) Failed to define class de.klett.keycloak.idp.DemologinIdentityProvider in Module "deployment.idp-demlogin.jar" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link de/keycloak/idp/demologin/DemologinIdentityProvider (Module "deployment.idp-demologin.jar" from Service Module Loader): org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider

那么,我该如何解决? 如何使org / keycloak / broker / oidc / AbstractOAuth2IdentityProvider可用于我的keycloak模块?

我没有定义module.xml,因为我正在使用Keycloak Deployer。社交SPI是Keycloak中的专用SPI。甚至可以在自定义扩展中使用私有SPI吗?

0 个答案:

没有答案