Spring Authorization Server - 최소 설정 적용 예시
IT IT 인터넷 Spring Security
http://java21.net/blog/marco?post_id=2431
Spring Authorization Server - 최소 설정 적용 예시
Spring Authorization Server - 최소 설정 적용 예시
Spring Authorization Server는 OAuth2 인증 서버를 구성할 때 기본적으로 필요한 여러 설정을 자동으로 제공해주지만, 몇 가지 필수적인 설정은 개발자가 직접 구성해주어야 합니다.
이번에는 Spring Authorization Server에서 제공하는 OAuth2AuthorizationServerConfiguration을 활용해 가장 기본적인 OAuth2 인증 서버 설정을 구성하는 방법을 살펴보겠습니다.
1. 최소 설정 예시 코드
@Configuration
@Import(OAuth2AuthorizationServerConfiguration.class)
public class AuthorizationServerConfig {
// 클라이언트 등록 (ex. Client ID, Secret 등)
@Bean
public RegisteredClientRepository registeredClientRepository() {
List<RegisteredClient> registrations = ...
return new InMemoryRegisteredClientRepository(registrations);
}
// JWT 서명용 RSA Key 등록
@Bean
public JWKSource<SecurityContext> jwkSource() {
RSAKey rsaKey = ...
JWKSet jwkSet = new JWKSet(rsaKey);
return (jwkSelector, securityContext) -> jwkSelector.select(jwkSet);
}
}위 설정이 의미하는 것
설정 내용 | 설명 |
|---|---|
| OAuth2 인증 서버 기본 설정 자동 적용 |
| OAuth2 클라이언트 등록 (Client ID, Secret 등 관리) |
| Access Token(JWT)의 서명 검증을 위한 공개키 관리 |
2. 추가로 꼭 알아야 할 부분
Authorization Code Grant 사용 시 주의사항
Authorization Code 방식을 사용할 경우 "사용자 인증"이 필수입니다.
즉, OAuth2 인증 서버 설정만으로 끝나는 것이 아니라,
스프링 시큐리티를 이용해 일반적인 로그인 기능 (User 인증) 도 함께 구성해주어야 합니다.
3. OpenID Connect 1.0 활성화 (선택)
OAuth2 인증 서버 기본 설정만으로는 OpenID Connect(OIDC) 관련 기능이 비활성화 되어 있습니다.
OIDC를 활성화하려면 다음과 같이 설정을 추가해주어야 합니다.
@Bean
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
OAuth2AuthorizationServerConfigurer.authorizationServer();
http
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
.with(authorizationServerConfigurer, (authorizationServer) ->
authorizationServer
.oidc(Customizer.withDefaults()) // OIDC 활성화
);
return http.build();
}4. OIDC 활성화 시 추가로 제공되는 Endpoint
OIDC를 활성화하면 OAuth2 기본 Endpoint 외에 다음과 같은 Endpoint들이 자동으로 추가됩니다.
Endpoint | 역할 | 기본 경로 |
|---|---|---|
Provider Configuration Endpoint | OIDC 서버 메타데이터 제공 |
|
Logout Endpoint | OIDC 로그아웃 처리 |
|
UserInfo Endpoint | 사용자 정보 제공 |
|
정리
내용 | 설명 |
|---|---|
OAuth2 기본 설정 |
|
필수 Bean |
|
사용자 인증 | Authorization Code 방식 사용 시 스프링 시큐리티 기반 로그인 기능 필요 |
OIDC 지원 | 옵션 - OIDC 활성화 시 UserInfo, Logout, Metadata 제공 Endpoint 자동 구성 |
마치며
Spring Authorization Server는 OAuth2 인증 서버를 구축할 때 많은 부분을 자동으로 처리해주는 강력한 도구입니다.
하지만, 기본 설정만으로 모든 기능이 끝나는 것은 아니기 때문에, 반드시 필요한 부분 (클라이언트 등록, 키 관리, 사용자 인증 등)은 개발자가 직접 구성해주어야 합니다.
특히 OpenID Connect(OIDC) 기능을 함께 활용하면 OAuth2 인증 서버를 더 강력하게 확장할 수 있기 때문에 필요에 따라 OIDC 설정도 고려해보시면 좋습니다.