예: 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
'programing' 카테고리의 다른 글
구문 오류:Object.parse(네이티브) Angular에 예기치 않은 토큰이 있습니다.JS (0) | 2023.03.04 |
---|---|
Mongo에서 "NOT IN" 쿼리를 실행하려면 어떻게 해야 하나요? (0) | 2023.03.04 |
현재 폴더에 직접 React 앱을 만드는 방법 (0) | 2023.03.04 |
파일을 번들하지 않도록 웹 팩 가져오기 (0) | 2023.03.04 |
Javascript 개체를 Json 문자열로 인코딩하는 중 (0) | 2023.03.04 |