programing

예: keycloak spring-boot 어플리케이션이 bean Keycloak Spring BootConfigResolver를 찾을 수 없음

cafebook 2023. 3. 4. 15:10
반응형

예: keycloak spring-boot 어플리케이션이 bean Keycloak Spring BootConfigResolver를 찾을 수 없음

다음에서 예제 앱을 실행하려고 합니다.

https://github.com/keycloak/keycloak-quickstarts/tree/latest/app-springboot

에러가 발생하고 있다.

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 1 of method setKeycloakSpringBootProperties in org.keycloak.adapters.springboot.KeycloakBaseSpringBootConfiguration required a bean of type 'org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver' that could not be found.


Action:

Consider defining a bean of type 'org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver' in your configuration.


Process finished with exit code 1

현시점에서는 솔루션을 가지고 있지 않지만, 몇 달 전에 Keycloak Jira에 같은 문제가 등록되어 있는 것을 알 수 있습니다.https://issues.jboss.org/browse/KEYCLOAK-10595이 문제는 이 PR 코드(https://github.com/keycloak/keycloak/pull/6075)가 원인인 것 같습니다.

PR의 작성자는 이 문제에 대해 다음과 같이 설명했습니다.남은 유일한 문제는 리졸버가 보통 Keycloak을 사용하는 구성에 포함되어 있다는 것입니다.AutoConfiguration(이 예에서는 SharedConfiguration)을 사용하면 Configuration 작성 중에 Bean에 액세스 할 수 있습니다.이 문제는 리졸바 빈을 Keyclock 전에 로드해야 하는 다른 구성으로 이동함으로써 해결할 수 있습니다.자동 설정」(출처:https://issues.jboss.org/browse/KEYCLOAK-10334?focusedCommentId=13738518&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13738518)


갱신(구)

Keycloak Jira(https://issues.jboss.org/browse/KEYCLOAK-11282),의 문제에 대해 임시 회피책이 제안되었습니다.

@Configuration
public class MyKeycloakSpringBootConfigResolver extends KeycloakSpringBootConfigResolver {
    private final KeycloakDeployment keycloakDeployment;

    public MyKeycloakSpringBootConfigResolver(KeycloakSpringBootProperties properties) {
        keycloakDeployment = KeycloakDeploymentBuilder.build(properties);
    }

    @Override
    public KeycloakDeployment resolve(HttpFacade.Request facade) {
        return keycloakDeployment;
    }
}

최신 정보

이 문제를 해결하는 보다 간단한 방법은KeycloakSpringBootConfigResolver다른 컨피규레이션클래스로 하겠습니다이 옵션을 사용하면 Spring Boot와 Spring Security의 문제가 모두 해결됩니다.

@Configuration
public class KeycloakConfig {

    @Bean
    public KeycloakSpringBootConfigResolver keycloakConfigResolver() {
        return new KeycloakSpringBootConfigResolver();
    }
}

토마스의 대답은 내게 효과가 있었다.Keyclock spring boot properties 클래스는 Application 클래스에 다음과 같이 주석을 달아 수동으로 활성화해야 합니다.

@EnableConfigurationProperties(KeycloakSpringBootProperties.class)

또한 커스텀 키락스프링 부트 설정 리졸바 빈을 명시적으로 덮어쓸 필요가 있습니다.

@Bean
@Primary
public KeycloakConfigResolver keycloakConfigResolver(KeycloakSpringBootProperties properties) {
      return new MyKeycloakSpringBootConfigResolver(properties);
}

KeycloakConfig 클래스 선언에 주석을 추가하면 이 문제를 해결할 수 있습니다.

@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class,
               excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, 
               pattern = "org.keycloak.adapters.springsecurity.management.HttpSessionManager"))
public class KeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter 
{
}

언급URL : https://stackoverflow.com/questions/57787768/example-keycloak-spring-boot-app-fails-to-find-bean-keycloakspringbootconfigreso

반응형