본문 바로가기

Study Information Technology

구현하기 Spring Boot에서 OAuth 20 인증 설정하기

728x90
반응형

구현하기: Spring Boot에서 OAuth 2.0 인증 설정하기

Overview

OAuth 2.0은 현대적인 인증 및 권한 부여 프레임워크로, 다양한 서비스 간에 사용자의 자원 접근 권한을 안전하게 공유할 수 있게 해줍니다. Spring Boot와 함께 OAuth 2.0을 구현하면 손쉽게 서드파티 서비스와의 연동을 가능하게 할 수 있습니다. 이번 가이드에서는 Spring Boot 애플리케이션에서 OAuth 2.0을 사용하여 로그인 및 권한 부여를 구현하는 방법에 대해 자세히 설명하겠습니다.

구현 단계

  1. 의존성 추가하기: Spring Boot 프로젝트에 OAuth 2.0 지원을 위한 의존성을 추가합니다.
<!-- pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

이 의존성은 Spring Security OAuth 2.0 클라이언트 모듈을 포함하며, OAuth 2.0 클라이언트로의 통합을 가능하게 합니다.

  1. application.yml 설정: OAuth 2.0 클라이언트를 구성하기 위해 application.yml 파일에 다음과 같이 설정을 추가합니다.
spring:
security:
oauth2:
client:
registration:
google:
client-id: <your-client-id>
client-secret: <your-client-secret>
scope:
- email
- profile

위 설정은 Google OAuth 2.0을 예시로 하며, 클라이언트 ID와 시크릿을 제공해야 합니다. scope는 애플리케이션이 요청할 권한 범위를 지정합니다.

  1. OAuth 2.0 로그인 처리하기: @EnableOAuth2Client 어노테이션을 사용하여 OAuth 2.0 클라이언트를 활성화하고, 로그인을 처리하는 방법을 구현합니다.
@Configuration
@EnableOAuth2Client
public class OAuth2Config extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login**", "/error**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.oauth2Login();
}
}

위 설정은 기본적으로 로그인 페이지(/login) 및 오류 처리(/error)를 모든 사용자에게 허용하고, 그 외의 모든 요청은 인증된 사용자에게만 접근을 허용합니다.

  1. 액세스 토큰 관리: OAuth 2.0을 사용하면 인증을 통해 발급된 액세스 토큰을 관리해야 합니다. 이 토큰은 다른 서비스에서 사용자 자원에 접근할 때 필요합니다.
@RestController
public class UserController {

@GetMapping("/user")
public Principal getUser(Principal principal) {
return principal;
}
}

위 예시는 인증된 사용자 정보를 반환하는 엔드포인트입니다. Principal 객체를 통해 사용자의 정보에 접근할 수 있습니다.

에러 처리

OAuth 2.0 구현 중 발생할 수 있는 주요 에러는 다음과 같습니다:

  • 401 Unauthorized: 클라이언트 인증에 실패했을 때 발생하는 오류입니다. 이 경우 클라이언트 ID 및 시크릿을 다시 확인해야 합니다.
  • 403 Forbidden: 인가되지 않은 자원에 접근하려고 할 때 발생합니다. 사용자의 권한을 다시 검토하거나, 요청 권한 범위(scope)를 수정해야 할 수 있습니다.

해결책

위 에러를 해결하기 위한 주요 접근 방법은 다음과 같습니다:

  1. 클라이언트 ID 및 시크릿 확인: OAuth 2.0 제공자(예: Google, Facebook 등)에 등록된 클라이언트 ID 및 시크릿을 올바르게 설정했는지 확인합니다.
  2. 스코프(scope) 검토: 요청할 권한 범위를 올바르게 설정했는지 확인합니다. 필요한 권한(scope)이 포함되어 있는지 다시 확인합니다.

참고 문서

이 가이드에서 사용된 코드와 설정에 대한 자세한 내용은 Spring 공식 문서를 참고하실 수 있습니다:

이 문서는 Spring Boot와 Spring Security에서 OAuth 2.0을 구성하는 방법에 대한 포괄적인 설명을 제공합니다.

반응형