Tích hợp Đăng nhập Google, GitHub, Facebook với Spring Boot

제목

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Java Spring Boot 개발자, OAuth 2.0 인증 구현 필요자 (중급 이상)

핵심 요약

  • OAuth 2.0을 활용한 Spring Security 기반의 소셜 로그인 시스템 구축 방법
  • application.ymlOAuth2ClientRegistration 설정을 통해 Google, GitHub, Facebook 인증 정보 구성
  • SecurityFilterChain을 통해 인증 경로인가 규칙 정의
  • OAuth2AuthenticationToken을 사용한 사용자 정보 추출뷰 렌더링 처리

섹션별 세부 요약

1. OAuth 2.0 개요

  • OAuth 2.0비밀번호 없이 제3자 인증을 가능하게 하는 표준 프로토콜
  • Spring Securityspring-security-oauth2-client 라이브러리로 OAuth 2.0 클라이언트 지원
  • 스코프(scope) 설정을 통해 필요한 사용자 정보(profile, email 등) 요청 가능

2. 환경 설정

  • Java 17+, Spring Boot 3.x, Maven/Gradle, Thymeleaf 등 의존성 추가
  • pom.xmlspring-security-oauth2-client 모듈 포함

3. Google 로그인 설정

  • Google Cloud Console에서 OAuth 2.0 클라이언트 ID 생성
  • application.ymlclient-id, client-secret, redirect URI 설정
  • authorization-uri, token-uri, user-info-uri프로바이더 고유 설정 필요

4. GitHub 로그인 설정

  • GitHub Developer Settings에서 OAuth App 등록
  • Homepage URLAuthorization Callback URL 설정
  • application.ymlgithub 계정 정보 입력

5. Facebook 로그인 설정

  • Facebook Developer Portal에서 App 등록Facebook Login 제품 추가
  • Valid OAuth Redirect URIs 설정
  • application.ymlfacebook 계정 정보 입력

6. 보안 설정

  • @EnableWebSecurity 어노테이션으로 SecurityConfig 클래스 생성
  • SecurityFilterChain을 통해 인증 경로( "/", "/login**") 허용 설정
  • oauth2Login().defaultSuccessUrl인증 성공 후 리디렉션 URL 정의

7. 사용자 인터페이스 렌더링

  • Thymeleaf 템플릿 엔진을 사용한 로그인 UI 구성
  • /login 경로로 소셜 로그인 버튼 표시

8. 사용자 정보 처리

  • OAuth2AuthenticationToken 객체를 통해 사용자 정보(이름, 이메일 등) 추출
  • Model 객체에 사용자 정보 추가 후 home.html 뷰 렌더링

결론

  • 소셜 로그인 구현application.ymlOAuth2ClientRegistration 설정을 반드시 적용
  • SecurityFilterChain을 통해 인증 경로인가 규칙을 명확히 정의
  • OAuth2AuthenticationToken을 사용해 사용자 정보를 추출하고 뷰 렌더링 처리
  • 보안 고려사항으로 client-secret환경 변수에 저장, 하드코딩 금지