먼저, 구글 API 콘솔 사이트에서 Client Id와 Client Secret을 발급받자!

동의화면 구성 탭에서는 외부를 선택해서, Google 계정이 있는 모든 테스트 사용자가 사용할 수 있도록 한다.

이후 필수 항목들을 채워 완료하면 된다.
다음 버튼을 눌러 범위를 등록하자. 범위 추가 또는 삭제를 클릭하고, email, profile, openid만 선택하면 된다.

생성한 프로젝트로 이동해서, 사용자 인증 정보 탭으로 이동한다.

사용자 인증정보 만들기에서 OAuth 클라이언트 ID를 선택한 뒤,

애플리케이션 유형, 이름을 지정하고

리다이렉션 URI를 등록하면 된다!

💡 리다이렉트 URL
Spring Security 공식 문서에서는
{baseUrl}/login/oauth2/code/{registrationId}으로 지정하라고 나와있다.
현재는 임시로
http://localhost:8080/login/oauth2/code/google으로만 지정했다. 추후 localhost 부분을 변경하고, registrationId를 추가해야한다.
[참고] 리다이렉트 URL을 지원하는 controller는 Security에서 이미 구현되어 있어서 를 만들지 않아도 된다!
다음과 같이 잘 생성된 모습이다!
다운로드 버튼을 클릭하면 json파일로 다운받을 수도 있다.

기존 application.properties에 코드만 추가해도 되지만, 더 보기좋게 하기 위해 파일을 분리했다.
먼저 앞서 생성한 인증정보 중 클라이언트 ID와 Secret을 등록하자.
💡 환경변수
다만 보안사항이므로
환경변수로 설정하였다. 참고 블로그
- 클라이언트 ID : REGISTRATION_GOOGLE_CLIENT-ID
- 클라이언트 Secret : REGISTRATION_GOOGLE_CLIENT-SECRET
scope로는 email과 profile을 설정했다!
scope의 기본값은 email, profile, openid이다. openid를 제외한 이유는, 추후 네이버/카카오 등의 소셜로그인을 추가할 경우를 대비해서이다.
구글은 openid provider인 서비스이지만, 네이버/카카오등은 그렇지 않으므로 따로 만들어야 하므로! openid를 제외해서 한번에 사용하도록 한 것.
# Google Login
spring:
security:
oauth2:
client:
registration:
google:
client-id: REGISTRATION_GOOGLE_CLIENT-ID
client-secret: REGISTRATION_GOOGLE_CLIENT-SECRET
scope:
- email
- profile
# Google Login
spring.security.oauth2.client.registration.google.client-id=REGISTRATION_GOOGLE_CLIENT-ID
spring.security.oauth2.client.registration.google.client-secret=REGISTRATION_GOOGLE_CLIENT-SECRET
spring.security.oauth2.client.registration.google.scope=email,profile
spring.profiles.include=oauth
spring.profiles.include=oauth 를 추가해서,
profile=ouath가 호출되면 해당 properties의 설정들을 가져오게 한다.