Проблема совместимости версии Keycloak со Springboot - PullRequest
1 голос
/ 01 июля 2019

Я интегрирую Keycloak 6.0.1 с Springboot версии 1.5.4, но получаю ошибку развертывания приложения, как показано ниже -

2019-07-01 16:36:19.613  INFO 4920 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'securityProperties' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; factoryMethodName=securityProperties; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/security/SecurityAutoConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration; factoryMethodName=securityProperties; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/security/SecurityFilterAutoConfiguration.class]]
2019-07-01 16:36:19.789 ERROR 4920 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: org/springframework/boot/web/embedded/undertow/UndertowDeploymentInfoCustomizer
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_181]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_181]
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_181]
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613) ~[spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]

Может кто-нибудь помочь мне решить эту проблему?

Я пытался загрузить версию keycloak 3.3.0.final, как предлагалось в некоторых блогах, для использования с упомянутой версией Springboot, но я мог получить ссылку для загрузки версии keycloak 3.3.0.

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Если вы используете keycloak-spring-boot-starter для интеграции с keycloak, тогда вам нужно использовать Keycloak 4.0.0.Final, который поддерживает подпружиненную загрузку 1.5.2.RELEASE

Вы можете проверить зависимости здесь

с брелоком 6.0.1 поддерживает пружинную загрузку 2.0.3.RELEASE

0 голосов
/ 05 июля 2019

Я играл в Keycloak последние 2 недели.

Я сделал Keycloak 6.0.1, работающий с Spring Boot 1.4.1.Только что попробовал ваш Spring Boot версии 1.5.2, похоже, работает.

Я сделал мой пример, основанный на этом репо https://github.com/thomasdarimont/spring-boot-admin-keycloak-example

Удалена зависимость пружина-загрузчик-стартер-привод, так как все равнооб этом.

todo-service pom.xml, который я получил:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>todo-service</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>todo-service</name>
<description>Demo project for Spring Boot</description>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <java.version>1.8</java.version>
    <spring-boot.version>1.5.2.RELEASE</spring-boot.version>
    <lombok.version>1.16.10</lombok.version>
    <keycloak.version>6.0.1</keycloak.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring-boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>

    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <optional>true</optional>
    </dependency>

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.keycloak.bom</groupId>
            <artifactId>keycloak-adapter-bom</artifactId>
            <version>${keycloak.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
</project>

Поиграйте с этим репозиторием, обновите свойства приложения до ваших настроек keycloak, сделайте его работоспособным и скопируйте необходимые зависимостив исходный проект, пока вы не получите то, что вам нужно (что я сделал для моего)

Вывод: Keycloak 6.0.1 может работать с Spring Boot 1.x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...