[Spring] 구글 로그인-1. 서비스 등록 / 프로젝트 설정 / 환경변수

Jina·2023년 8월 12일

📍 구글 서비스 등록


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

새 프로젝트 생성

동의화면 구성

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

이후 필수 항목들을 채워 완료하면 된다.

  • 앱 이름 : 구글 로그인시 사용자에게 노출될!! 앱 이름
  • 사용자 지원 이메일 : 사용자 동의 화면에서 유저에게 노출될!! 이메일 주소 (help 이메일 주소이면 좋음)

다음 버튼을 눌러 범위를 등록하자. 범위 추가 또는 삭제를 클릭하고, 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-oauth.properties

기존 application.properties에 코드만 추가해도 되지만, 더 보기좋게 하기 위해 파일을 분리했다.

클라이언트 ID, Secret

먼저 앞서 생성한 인증정보 중 클라이언트 ID와 Secret을 등록하자.

💡 환경변수

다만 보안사항이므로 환경변수로 설정하였다. 참고 블로그

  • 클라이언트 ID : REGISTRATION_GOOGLE_CLIENT-ID
  • 클라이언트 Secret : REGISTRATION_GOOGLE_CLIENT-SECRET

scope

scope로는 emailprofile을 설정했다!

scope의 기본값은 email, profile, openid이다. openid를 제외한 이유는, 추후 네이버/카카오 등의 소셜로그인을 추가할 경우를 대비해서이다.

구글은 openid provider인 서비스이지만, 네이버/카카오등은 그렇지 않으므로 따로 만들어야 하므로! openid를 제외해서 한번에 사용하도록 한 것.

  • yaml 파일로 작성한 경우
# Google Login
spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: REGISTRATION_GOOGLE_CLIENT-ID
            client-secret: REGISTRATION_GOOGLE_CLIENT-SECRET
            scope:
              - email
              - profile
  • properties 파일로 작성한 경우
# 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

application.properties

spring.profiles.include=oauth

spring.profiles.include=oauth 를 추가해서,
profile=ouath가 호출되면 해당 properties의 설정들을 가져오게 한다.


참고자료

0개의 댓글