authorization server 1.0.2 Oidc Configurer없음
현업 환경 상 1.0.2 버전에서 개발하고 있는데 OAuth2AuthorizationServerConfigurer 에 OIDC 관련 configurer 가 빠진 것으로 보입니다.
공식문서를 봐도 customizing 하는 부분은 있는데
default 설정은 어떻게 가져다 쓸 수 있는지 안내되어있는 곳을 못찾았는데요.
get /userinfo 요청을 보내도 OidcUserInfoEndpointFilter 에 디버깅이 걸리지 않고 FilterChainProxy 에서도 Filter 리스트에서 빠져 있습니다.
어디를 찾아봐야할까요?
private Map<Class<? extends AbstractOAuth2Configurer>, AbstractOAuth2Configurer> createConfigurers() {
Map<Class<? extends AbstractOAuth2Configurer>, AbstractOAuth2Configurer> configurers = new LinkedHashMap<>();
configurers.put(OAuth2ClientAuthenticationConfigurer.class, new OAuth2ClientAuthenticationConfigurer(this::postProcess));
configurers.put(OAuth2AuthorizationServerMetadataEndpointConfigurer.class, new OAuth2AuthorizationServerMetadataEndpointConfigurer(this::postProcess));
configurers.put(OAuth2AuthorizationEndpointConfigurer.class, new OAuth2AuthorizationEndpointConfigurer(this::postProcess));
configurers.put(OAuth2TokenEndpointConfigurer.class, new OAuth2TokenEndpointConfigurer(this::postProcess));
configurers.put(OAuth2TokenIntrospectionEndpointConfigurer.class, new OAuth2TokenIntrospectionEndpointConfigurer(this::postProcess));
configurers.put(OAuth2TokenRevocationEndpointConfigurer.class, new OAuth2TokenRevocationEndpointConfigurer(this::postProcess));
return configurers;
}
답변 2
0
네
확인해 보니까 OidcConfigurer 는 기본적으로 비활성화 되어 있습니다.
그래서 명시적으로 사용할 수 있도록 OAuth2AuthorizationServerConfigurer 클래스의 아래 메서드를 호출해 주어야 합니다.
/**
* Configures OpenID Connect 1.0 support (disabled by default).
*
* @param oidcCustomizer the {@link Customizer} providing access to the {@link OidcConfigurer}
* @return the {@link OAuth2AuthorizationServerConfigurer} for further configuration
*/
public OAuth2AuthorizationServerConfigurer oidc(Customizer<OidcConfigurer> oidcCustomizer) {
OidcConfigurer oidcConfigurer = getConfigurer(OidcConfigurer.class);
if (oidcConfigurer == null) {
addConfigurer(OidcConfigurer.class, new OidcConfigurer(this::postProcess));
oidcConfigurer = getConfigurer(OidcConfigurer.class);
}
oidcCustomizer.customize(oidcConfigurer);
return this;
}호출하는 방법은 대략 다음과 같습니다.
@Bean
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
new OAuth2AuthorizationServerConfigurer();
RequestMatcher endpointsMatcher = authorizationServerConfigurer
.getEndpointsMatcher();
// OidcConfigurer 활성화
authorizationServerConfigurer.oidc(Customizer.withDefaults());
http.build();
}Oidc 는 아무래도 인증을 위한 전용 프로토콜이다 보니 꼭 사용할 필요가 있을 경우에만 활성화 하도록 변경된 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. leese님, Spring Security의 OAuth2AuthorizationServerConfigurer에서 기본 제공되는 OIDC(OpenID Connect) 설정이 누락되어 있음을 발견하셨군요.
OIDC 설정이 기본적으로 포함되지 않은 상황에서는 사용자 정보 엔드포인트(/userinfo)가 작동하지 않을 수 있습니다. 기본 OIDC 지원을 포함하는 방법에 대한 정보는 제가 알려드릴 수 있는 내용이 현재 없습니다.
공식 문서에서 OIDC를 위한 디폴트 설정을 찾으시는 것이 어렵다면, OIDC 지원과 관련된 추가 설정을 위해 OAuth2AuthorizationServerConfigurer를 상속받아 필요한 컴포넌트를 수동으로 설정할 수 있습니다. 이 경우 OpenID Connect 1.0 프로토콜을 준수하는 UserInfo 엔드포인트, ID 토큰 발행 등의 로직을 직접 구현해야 할 수도 있습니다.
다른 개발자들의 구현 사례, 예시 코드, 또는 스프링 시큐리티와 관련된 커뮤니티 포럼을 참고하여 필요한 설정을 진행해보시는 것을 권장드립니다. 때로는 보다 최신 버전을 사용하거나, 관련된 추가적인 문서를 찾아보는 것이 빠른 해결책이 될 수도 있습니다.
질문하신 내용의 최신 버전에 대한 정보는 Spring Boot Reference Documentation v3.1.5와 관련된 Authorization Server 문서에서 확인하실 수 있습니다. 문제를 직면하셨을 때, 더 자세한 지원을 받거나 특정한 구현 사항에 대한 해결책을 찾으시려면 스프링 시큐리티 개발팀에 이슈를 제기하거나 스택 오버플로우 같은 프로그래밍 커뮤니티에 질문을 등록하는 것도 좋은 방법입니다.
현재 환경에서 필요한 OIDC 관련 설정을 진행하기 위해서는 추가적인 커스터마이징이 필요할 것으로 보입니다.
authorization-server 라이브러리 질문이 있습니다.
0
75
1
loadUser 중 Missing attribute 'preferred_username' in attributes 에러 발생
0
76
2
JWT 조회 에 대한 질문
0
70
1
password grant 방식 에러 응답
0
88
3
FormLoginConfigure에서 생성하는 필터
0
76
2
현업에서 springboot를 3.5.5 를 사용해서 공부중인데...
0
282
2
Jdbc 관련 강의 및 깃헙 문의
0
77
1
OAuth2AuthorizedClient 이해 및 활용 강의 내용 질문
0
208
1
UserInfo 엔드포인트 요청 실습
0
73
1
RFC 문서에서의 AccessToken 발급 방식 궁금한점
0
150
1
강의자료.zip 를 다운로드 받았는데 압축이 풀리지 않습니다. 확인 부탁드려요
0
139
2
OIDC SSO 관련 질문 입니다.
0
130
1
AuthenticationEntryPoint 강의 누락 문의
0
121
1
cors설정방법
0
115
1
jwt decoder 토큰 검증 시 질문
0
221
1
클라이언트에서 userinfo 엔드포인트 호출 시 질문
0
184
2
JOSE 구성요소의 api에 관한 질문
0
140
2
스프링 부트 3버전으로 따라가시는 분들 참고하세요
1
527
1
CustomOAuth2AuthenticationFilter 구현 중 질문
0
145
2
AuthenticationManager 생성시점
0
117
1
FormLogin과 Oauth2Client 둘 중 사용하는 시점
0
127
1
postman userinfo 엔드포인트 질문
0
135
2
강의 수강신청하고 듣기 전입니다 질문있습니다.
0
113
1
인증 코드를 통해 발급 받은 토큰의 관리
0
198
1





