제목
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Java Spring Boot 개발자, OAuth 2.0 인증 구현 필요자 (중급 이상)
핵심 요약
- OAuth 2.0을 활용한 Spring Security 기반의 소셜 로그인 시스템 구축 방법
- application.yml에 OAuth2ClientRegistration 설정을 통해 Google, GitHub, Facebook 인증 정보 구성
- SecurityFilterChain을 통해 인증 경로 및 인가 규칙 정의
- OAuth2AuthenticationToken을 사용한 사용자 정보 추출 및 뷰 렌더링 처리
섹션별 세부 요약
1. OAuth 2.0 개요
- OAuth 2.0은 비밀번호 없이 제3자 인증을 가능하게 하는 표준 프로토콜
- Spring Security는 spring-security-oauth2-client 라이브러리로 OAuth 2.0 클라이언트 지원
- 스코프(scope) 설정을 통해 필요한 사용자 정보(profile, email 등) 요청 가능
2. 환경 설정
- Java 17+, Spring Boot 3.x, Maven/Gradle, Thymeleaf 등 의존성 추가
- pom.xml에 spring-security-oauth2-client 모듈 포함
3. Google 로그인 설정
- Google Cloud Console에서 OAuth 2.0 클라이언트 ID 생성
- application.yml에 client-id, client-secret, redirect URI 설정
- authorization-uri, token-uri, user-info-uri 등 프로바이더 고유 설정 필요
4. GitHub 로그인 설정
- GitHub Developer Settings에서 OAuth App 등록
- Homepage URL 및 Authorization Callback URL 설정
- application.yml에 github 계정 정보 입력
5. Facebook 로그인 설정
- Facebook Developer Portal에서 App 등록 및 Facebook Login 제품 추가
- Valid OAuth Redirect URIs 설정
- application.yml에 facebook 계정 정보 입력
6. 보안 설정
- @EnableWebSecurity 어노테이션으로 SecurityConfig 클래스 생성
- SecurityFilterChain을 통해 인증 경로( "/", "/login**") 허용 설정
- oauth2Login().defaultSuccessUrl로 인증 성공 후 리디렉션 URL 정의
7. 사용자 인터페이스 렌더링
- Thymeleaf 템플릿 엔진을 사용한 로그인 UI 구성
- /login 경로로 소셜 로그인 버튼 표시
8. 사용자 정보 처리
- OAuth2AuthenticationToken 객체를 통해 사용자 정보(이름, 이메일 등) 추출
- Model 객체에 사용자 정보 추가 후 home.html 뷰 렌더링
결론
- 소셜 로그인 구현 시 application.yml에 OAuth2ClientRegistration 설정을 반드시 적용
- SecurityFilterChain을 통해 인증 경로와 인가 규칙을 명확히 정의
- OAuth2AuthenticationToken을 사용해 사용자 정보를 추출하고 뷰 렌더링 처리
- 보안 고려사항으로 client-secret은 환경 변수에 저장, 하드코딩 금지