Back-End/Springboot와 AWS로 혼자 구현하는 웹 서비스

Chapter 05. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (2)

yeonx 2022. 3. 25. 22:58
728x90

5.2 구글 서비스 등록

먼저 구글 서비스에 신규 서비스를 생성한다.

여기서 발급된 인증 정보(clientId와 clientSecret)를 통해서

로그인 기능과 소셜 서비스 기능을 사용할 수 있으니

무조건 발급받고 시작해야 함

 

구글 클라우드 플랫폼 주소 (http://console.cloud.google.com)로 이동한다.

 

새 프로젝트
사용자 인증 정보
OAuth 클라이언트 ID

 

OAuth 클라이언트 ID 만들기

- 서비스에서 파라미터로 인증 정보를 주었을 때 인증이 성공하면 구글에서 리다이렉트할 URL
- 스프링 부트 2 버전의 시큐리티에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드}로 리다이렉트 URL을 지원하고있다.
- 사용자가 별도로 리다이렉트 URL을 지원하는 Controller를 만들 필요가 없다. 시큐리티에서 이미 구현해 놓은 상태
- 현재는 개발 단계이므로 http://localhost:8080/login/oauth2/code/google로만 등록
- AWS 서버에 배포하게 되면 localhost 외에 추가로 주소를 추가해야하며, 이건 이후 단계에서 진행할 예정

 


application-oauth 등록

spring.security.oauth2.client.registration.google.client-id=구글클라이언트ID
spring.security.oauth2.client.registration.google.client-secret=구글클라이언트시크릿
spring.security.oauth2.client.registration.google.scope=profile,email
scope=profile.email
- 많은 예제에서는 이 scope를 별도로 등록하지 않고 있다.
- 기본값이 openid,profile,email이기 때문이다
- 강제로 profile, email를 등록한 이유는 openid라는 scope가 있으면 Open Id Provider로 인식하기 때문이다
- 이렇게 되면 OpenId Provider인 서비스(구글)와 그렇지 않은 서비스(네이버/카카오 등)로 나눠서 각각 OAuth2Service를 만들어야 한다.
- 하나의 OAuth2Service로 사용하기 위해 일부로 openid scope를 빼고 등록

 

스프링 부트에서는 properties의 이름을 application-xxx.properties로 만들면

xxx라는 이름의 profile이 생성되어 이를 통해 관리할 수 있음,

즉, profile=xxx라는 식으로 호출하면 해당 properties의 설정들을 가져올 수 있음

-> application.properties에서 application-oauth.properties를 포함하도록 구성

 

application.properties

spring.profiles.include=oauth

gitignore 등록

application-oauth.properties

깃허브에 연동하여 사용할 때, application-oauth.properties 파일이 올라가지 않도록

 

 

출처 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 [이동욱 지음]