본문 바로가기
Spring/Spring Boot

[Spring boot - OAuth2] Google Login 구현 #1

by seoyamin 2023. 2. 2.

오늘은 구글 로그인을 위한 사전 설정을 진행할 것이다.

 

1. Google API Console 접속

2. 프로젝트 만들기

2-1. 프로젝트 선택

 

2-2. 새 프로젝트

 

2-3. 프로젝트 이름을 설정하고 '만들기'

 


3. OAuth 동의 화면으로 이동

 

3-1. User Type '외부' 설정

 

3-2. 앱 이름, 사용자 지원 이메일, 개발자 이메일 입력하고 '저장 후 계속'

 

 

3-3. 범위, 테스트 사용자는 기본 상태 그대로 '저장 후 계속'

 

 


4. 사용자 인증 정보

4-1. 사용자 인증 정보로 이동하고 '사용자 인증 정보 만들기' 클릭

 

4-2. OAuth 클라이언트 ID 

4-3. 클라이언트 설정

※ 승인된 Redirection URI 
구글 로그인 완료 후 구글 서버에서 코드를 받을 URI

[주의] /login/oauth2/code 부분은 고정된 값이므로 변경하면 안됨

 

4-4. OAuth 클라이언트 정보 확인

클라이언트 ID, 클라이언트 보안 비밀번호는 잘 기억해두자!

(json 파일을 받아두면 편리하다)

 


5. 프로젝트 설정

5-1. build.gradle에 OAuth2 Client 추가

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

 

5-2. application.yml 설정

// application.yml

security:
  oauth2:
    client:
      registration:
        google:
          client-id: Google Api Console에서 만든 OAuth 클라이언트 ID
          client-secret : Google Api Console에서 만든 OAuth 클라이언트 보안 비밀번호
          scope:
            - email
            - profile

 

5-3. SecurityConfig.java 설정

// SecurityConfig.java

http.authorizeRequests()
        .antMatchers("/user/**").authenticated()
        .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')")
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .anyRequest().permitAll()

        .and()
        .formLogin()
        .loginPage("/loginForm")
        .loginProcessingUrl("/login")   
        .defaultSuccessUrl("/")

        .and()                        // oauth2 설정 추가
        .oauth2Login()
        .loginPage("/loginForm");

 

 

6. 설정 테스트

프론트단에서  /oauth2/authorization/google 으로 요청을 보내면 구글 로그인창이 잘 뜬다.