본문 바로가기
부트캠프 개발일기/Spring Security

68일차: OAuth2 구현(Google)

by shyun00 2023. 5. 19.

Google을 기준으로 OAuth2 인증 시스템을 적용해보고자 한다.

https://console.cloud.google.com/ 에서 클라이언트 ID와 Secret를 생성한다.

클라이언트 ID와 Secret는 애플리케이션 설정정보로 사용된다.

 

OAuth2을 적용하기 위해서는 OAuth2 의존성을 추가해주어야한다.

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

 

CSR 방식의 애플리케이션에 OAuth2를 적용되었을때의 흐름은 다음과 같다.

  1. Resource Owner가 웹 브라우저에서 Google로그인을 클릭한다.
  2. Frontend에서 Backend로 로그인 request를 전달한다.
  3. Google 로그인 화면을 요청하는 URI로 리다이렉트한다. (Backend -> Frontend)
  4. Resoruce Owner에게 로그인 화면을 오픈한다.
  5. Resource Owner가 로그인 인증정보를 입력해서 로그인을 수행한다.
  6. 로그인에 성공하면 Backend Redirect URI로 Authorization Codde를 요청한다(Backend -> Authorization Server)
  7. Authorization Server가 Backend 애플리케이션에게 Authorization Code를 전송한다.
  8. Backend 애플리케이션이 Authorization  Server에게 Access Token을 요청한다
  9. Authorization Server가 Backend 애플리케이션에게 Access Token을 전송한다.
  10. Backend 애플리케이션이 Resource Server에게 User Info를 요청한다.(이 때 Access Token 필요)
  11. Resource Server가 해당 정보를 Backend 에게 전달한다.
  12. Backend 애플리케이션은 JWT로 구성된 Access Token과 Refresh Token을 생성해서 Frontend에게 준다.

12 과정에서 AuthenticationSuccessHandler를 사용해서 OAuth2 인증에 성공하면 JWT를 생성할 수 있도록 해준다.


이번 과정은 실습이 특히 중요한 과정이었다. 과제 내용대로 따라해도 여러번의 에러들이 발생했는데

오류 내용을 자세히 읽어보고 관련 내용을 구글링하며 해결하는 재미가 있었다.

 

+ 추가

메인 프로젝트를 진행하면서 OAuth2.0을 사용한 회원가입, 로그인 로직을 추가했다. 

세부 내용은 다음과 같다.

2023.07.10 - [부트캠프 개발일기/Main-Project] - 102일차 - Main-Project Day 9 (Google OAuth2.0 회원가입, CSR 방식)