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);
	}

}

위 설정이 의미하는 것

설정 내용

설명

@Import(OAuth2AuthorizationServerConfiguration.class)

OAuth2 인증 서버 기본 설정 자동 적용

RegisteredClientRepository

OAuth2 클라이언트 등록 (Client ID, Secret 등 관리)

JWKSource

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 서버 메타데이터 제공

/.well-known/openid-configuration

Logout Endpoint

OIDC 로그아웃 처리

/connect/logout

UserInfo Endpoint

사용자 정보 제공

/userinfo


정리

내용

설명

OAuth2 기본 설정

OAuth2AuthorizationServerConfiguration import 로 자동 구성

필수 Bean

RegisteredClientRepository, JWKSource 등록

사용자 인증

Authorization Code 방식 사용 시 스프링 시큐리티 기반 로그인 기능 필요

OIDC 지원

옵션 - OIDC 활성화 시 UserInfo, Logout, Metadata 제공 Endpoint 자동 구성


마치며

Spring Authorization Server는 OAuth2 인증 서버를 구축할 때 많은 부분을 자동으로 처리해주는 강력한 도구입니다.

하지만, 기본 설정만으로 모든 기능이 끝나는 것은 아니기 때문에, 반드시 필요한 부분 (클라이언트 등록, 키 관리, 사용자 인증 등)은 개발자가 직접 구성해주어야 합니다.

특히 OpenID Connect(OIDC) 기능을 함께 활용하면 OAuth2 인증 서버를 더 강력하게 확장할 수 있기 때문에 필요에 따라 OIDC 설정도 고려해보시면 좋습니다.