[SpringBoot] OAuth2 활용해서 Google login 구현하기(1) - Google cloud에 프로젝트 등록하기

zooju·2023년 1월 18일
0

지금까지 Spring Security 없이 로그인을 구현했는데, 이렇게 되니까 굉장히 보안에 취약하다는 것을 깨달아서 (chrome network창에서 payload가 투명하게 공개됨) Spring Security를 적용해보고자 한다.

그 첫번째 단계가 프론트에서 담당하던 Google 로그인을 Oauth2.0으로 백엔드 단에서 구현하는 것이다.

1. 구글 OAuth 서비스 등록

1) 구글 콘솔 접속하기

https://console.cloud.google.com/apis

2) 새 프로젝트 만들기

3) 동의 화면 구성하기

“사용자 인증 정보” > “사용자 인증 정보 만들기” > “OAuth 클라이언트 ID” > “동의 화면 구성”


OAuth 클라이언트 ID 선택

동의 화면 구성 선택

외부 선택

이후 oauth 동의 화면에서 앱 정보, 개발자 연락처 정보를 입력한다.

그리고 “범위”에서 필요한 정보를 선택한다. 나는 사용자의 email, profile Img, nickname이 필요해서 세개를 골랐다.

그리고 테스트 사용자를 등록해야한다.

이후에 어플을 테스트 모드로 했을 때 여기에 등록한 사용자만이 구글 사용자 기능을 이용할 수 있다.

테스트에 사용할 이용자들을 추가해준다. 나는 일단 나와 회사계정 2개만 추가해주었다.

이렇게 동의 화면을 모두 만들었다! 다시 사용자 인증 정보 만들기에 들어가서 OAuth 클라이언트ID 생성을 해보자.

4) OAuth 클라이언트 ID 만들기

웹 어플리케이션을 만들 것이기 때문에 웹 어플리케이션을 선택한다.

이후 이름을 작성하고 승인된 리디렉션 URI를 추가한다.

승인된 리디렉션 URL서비스에서 파라미터로 인증 정보를 주었을 때 인증이 성공하면 구글에서 리다이렉트 할 URL이다.

스프링 부트 2 시큐리티에서는 기본적으로

{도메인}/login/oauth2/code/{소셜서비스코드}

로 리다이렉트 URL을 지원하고 있기 때문에 따로 Controller를 만들 필요없이, 시큐리티가 구현한 것을 이용하면 된다.

현재는 개발 단계라서 Localhost로 했지만, 이후 도메인도 추가해서 연결할 것이다.

이렇게 하면 Client ID와 클라이언트 보안 비밀번호를 받게 된다.
이제 두 정보를 스프링에 넣어줄 것이다!


2. Spring에서 application-auth 등록하기

src/main/resource 디렉토리에 application-oauth.properties 파일을 생성해준 뒤, 다음 정보를 입력한다.

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

여기서 openid라는 scope가 있으면 Open Id Provider로 인식해서 다른 서비스들의 oauth를 등록할 때 어려움이 있기 때문에 이를 빼고 기입해주었다.

스프링 부트에서는 properties의 이름을 application-xxx.properties로 만들면 xxx라는 이름의 profile이 생성되어 이를 통해 관리할 수 있다. 즉, profile=xxx라는 식으로 호출하면 해당 properties의 설정을 가져올 수 있다는 것이다!! 이를 위해 application.properties에서 application-oauth.properties를 포함하도록 구성한다.

spring.profiles.include=oauth

이제 구글에 모든 등록을 마쳤고 이를 스프링에도 저장해주었다.
이제 Oauth2를 활용해서 구글 로그인 화면을 구현하고, DB에 저장해보자!!!

profile
이것 저것 새로운 분야에 관심이 많은 서버 개발자

0개의 댓글