[스프링/Spring] Google OAuth2 로그인 구현하기 (1)- 기본 설정

dongbrown·2024년 11월 12일

Spring

목록 보기
14/23

이번에는 Spring Boot 애플리케이션에서 Google OAuth2를 사용한 소셜 로그인을 구현하는 방법을 단계별로 알아보겠습니다. JWT를 사용한 인증과 함께, OAuth2 로그인 후 추가 정보 입력까지 구현할 예정입니다.

1. 사전 준비

  • Java 17 이상
  • Spring Boot 3.x
  • Gradle
  • MySQL/Oracle 등의 데이터베이스
  • Google 계정

2. Google Cloud Console 설정

  1. Google Cloud Console에 접속

  2. 새 프로젝트 생성 또는 기존 프로젝트 선택

  3. OAuth 동의 화면 구성

    • 외부 사용자 선택
    • 앱 이름, 사용자 지원 이메일 등 필수 정보 입력
    • 테스트 사용자 추가 (개발 중인 경우)
  4. OAuth 2.0 클라이언트 ID 생성

    • 사용자 인증 정보 → 사용자 인증 정보 만들기 → OAuth 클라이언트 ID
    • 애플리케이션 유형: 웹 애플리케이션
    • 승인된 리디렉션 URI 추가:
      http://localhost:8080/login/oauth2/code/google

3. 프로젝트 기본 설정

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.0'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

compileJava {
    options.compilerArgs << '-parameters'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'
    implementation 'javax.servlet:jstl'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    
    runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
    runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
    
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

4. application.properties 설정

# Google OAuth2 Configuration
spring.security.oauth2.client.registration.google.client-id=${GOOGLE_CLIENT_ID}
spring.security.oauth2.client.registration.google.client-secret=${GOOGLE_CLIENT_SECRET}
spring.security.oauth2.client.registration.google.scope=email,profile

# OAuth2 Common Configuration
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/v2/auth
spring.security.oauth2.client.provider.google.token-uri=https://www.googleapis.com/oauth2/v4/token
spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
spring.security.oauth2.client.provider.google.user-name-attribute=sub

# JWT Configuration
jwt.token-validity-in-milliseconds=3600000

# View Configuration
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# Logging Configuration
logging.level.org.springframework.security=INFO
logging.level.com.example=DEBUG

0개의 댓글