由于以下原因导致的错误:java.lang.ClassNotFoundException Keycloak

时间:2015-06-02 05:53:28

标签: java jboss keycloak

我在使用Keycloak部署应用时遇到问题:

  

部署错误:     由于以下原因,部署“vfs:/// D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo-ear.ear”出错s):java.lang.ClassNotFoundException:来自BaseClassLoader的javax.faces.component.UIComponent @ 6929c1c6 {vfs:/// D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy /keycloak-demo-ear.ear}

或者这个:

  

错误部署:部署   由于以下原因,“vfs:/// D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo.ear”出错   org.jboss.deployers.spi.DeploymentException:URL   文件:/ D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo-ear.ear/keycloak-demo-web.war/部署失败

将以下代码添加到web.xml

时会出现

错误

<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>demo</realm-name>
</login-config>

我在管理控制台的keycloak.json中创建了WEB-INF,如:

{
  "realm": "demo",
  "realm-public-key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "external",
  "resource": "panel",
  "credentials": {
    "secret": "6c3fa646-f033-4864-8b87-604887ce8eec"
  }
}

我从redme文件添加到Keycloak配置到standalone / configuration / standalone.xml:

对于WildFly和JBoss EAP 6.x

<extensions>
    <extension module="org.keycloak.keycloak-subsystem"/>
    ...
</extensions>

<profile>
    <subsystem xmlns="urn:jboss:domain:keycloak:1.0">
        <auth-server name="main-auth-server">
            <enabled>true</enabled>
            <web-context>auth</web-context>
        </auth-server>
    </subsystem>
    ...
</profile>

我正在使用这个keycloak(keycloak-appliance-dist-all-1.1.0.Final)http://sourceforge.net/projects/keycloak/files/1.1.0.Final/keycloak-appliance-dist-all-1.1.0.Final.zip/download

我从包中成功部署了示例keycloak 1.1.0,并希望在我的应用程序中使用keycloak。我做错了什么?

编辑:

我想我找到了导致问题的元素:

<parent>
    <artifactId>keycloak-parent</artifactId>
    <groupId>org.keycloak</groupId>
    <version>1.1.0.Final</version>
    <relativePath>../../../pom.xml</relativePath>
</parent>

当我从示例项目中删除此parent时,它将停止工作

我的应用结构是

  

mainapp
  ... pom.xml
       ... module1        ...        pom.xml的
  ... module2        ...        pom.xml的
  ... module3 ... pom.xml

每个模块都有parentmainapp

当我将keycloak中的父项添加到mainapp pom.xml时,parent中的mainapp错误pom.xml其他模块中的错误如下:

  

生命周期配置未涵盖插件执行:

我还尝试将dependency添加到keycloak-parent,但仍然无法使用

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

Keycloak由一个服务器(Keycloak服务器)和一个保护您的应用程序并处理身份验证的适配器组成。如果要在与Keycloak服务器相同的服务器中部署自己的应用程序,则需要将Keycloak适配器添加到服务器中(如前所述)(请参阅Keycloak adapters)。最新版本的Keycloak作为预配置的Wildfly 9提供,因此可能适合您的应用程序。还有适用于其他容器或纯HTML客户端的适配器。

根据您的问题,我猜您正在尝试将Keycloak示例修改为您自己的应用程序。 Keycloak示例使用共享父POM,因此可能希望将其拆分为单个POM以获得更好的概述。或者,根据您的专业知识,您可以从具有JAAS安全性的基本JEE应用程序开始,并将其部署到Keycloak服务器(安装了JBoss / Wildfly适配器)。参见例如Oracle's JEE 6 Tutorial

答案 1 :(得分:0)

为了让您的应用使用keycloak,您必须在服务器上安装适配器。以下是详细信息: https://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html

您可以在WEB-INF /上部署keycloak子系统或keycloak.json文件。两种情况都需要安装适配器 此致