Spring Boot | OAuth2 Google 로그인
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 작성하였습니다.
- java11
- Gradle 7.0.2
- Spring Boot 2.5.0
build.gradle
spring-boot-starter-oauth2-client
를 사용한다.
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
구글에 프로젝트 등록
https://console.cloud.google.com/ 로 접속 후, 새 프로젝트를 생성한다.
(이미 프로젝트 생성한 상태라 저렇게 되어있음.. 저 부분 클릭하면 모달창이 생성된다)
프로젝트 이름은 자유롭게 설정
API 및 서비스 > 사용자 인증 정보
(OAuth 동의 화면 부터 만들라고 할 것임..)
앱 이름은 동의 화면에 나타나는 이름임!
사용자 지원 이메일은 일단 테스트니까 대충 적고, 실제로는 help나 cs 이메일을 적는다.
개발자 연락처 정보를 적고 나머지는 비워둬도 괜찮음, 저장 후 계속
범위를 설정한다. 로그인 시 받을 정보의 범위를 설정하는 부분
email, profile, openid를 받도록 설정했다. 그리고 저장 후 계속
테스트 사용자를 등록한다. 앱이 승인되기 전까지는 이곳에서 등록한 사용자만 로그인이 가능하다.
저장 후 계속을 누르면 요약정보가 뜨게 된다! OAuth 동의 화면 설정 끝
이제 진짜 사용자 인증 정보를 발급받는다(clientId, clientSecret)
사용자 인증 정보 만들기 클릭
이름과 URI를 입력 후 저장한다.
승인된 리디렉션 URI는 로그인 성공 후 정보가 해당 URI로 도착하게 되는데,
이 endpoint는 spring-boot-starter-oauth2-client
라이브러리가 자동으로 생성해주고 처리해준다. (저대로 입력하란소리)
저장을 누르면 아마 clientId와 clientSecret이 발급될거다. 발급된 clientId와 clientSecret만 잘 등록하면 끝!
application-oauth.yml 파일 만들기
방금 발급받은 클라이언트 키를 등록해줘야 한다. 우선 application-oauth.yml
파일을 생성한 뒤 아래와 같은 형식으로 적어준다.
spring:
security:
oauth2:
client:
registration:
google:
clientId: google-client-id
clientSecret: google-client-secret
scope: profile,email
profile 설정
applcation-{profile}.yml
형태로 파일을 생성하게 되면, 자동으로 profile이 하나 생성된다고 보면 된다.application-oauth.yml
파일을 생성했으니, oauth
라는 프로필이 만들어진 것.
이제 이 프로필을 사용하겠다는 설정을 추가해준다.application.yml
에 프로필을 등록하는데, group
을 이용해 등록해준다!
스프링 부트 2.4버전부터 프로필을 설정하는 방법이 달라졌다. include는 더이상 사용하지 않고, group으로 설정한다.
spring:
profiles:
group:
local:
- oauth
이제 프로젝트 실행 시 local
이라는 프로필로 실행하면 oauth
프로필도 함께 포함되어 실행되게 된다.
이 다음부터는... 책의 내용대로 그대로~하면된다.. 귀찮은 거 아님...^^.. 책사세요... 추천...
https://jojoldu.tistory.com/168