구글 로그인을 이용하기 위해 클라이언드 ID와 보안키를 얻어야 한다. google cloud platform에 서비스를 등록하면 이를 얻을 수 있다.
- https://console.cloud.google.com 접속
- 프로젝트 선택 -> 새 프로젝트 생성
- 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID 생성 클릭
- 동의화면 구성 클릭
- 애플리케이션 이름, 지원 이메일, Google API 범위(email, profile, openid) 선택 후 저장.
- OAuth 클라이언트 ID 만들기 -> 웹 애플리케이션
- 승인된 리디렉션 URI : http://localhost:8080/login/oauth2/code/google
(spring security에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드}로 리다이렉트 URL을 지원)- 클라이언트 ID, 클라이언트 보안 비밀 생성 완료
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
스프링 부트의 기본 설정 파일인 application.properties에서 이 파일을 인식하도록 다음 코드를 application.properties에 추가한다.!
spring.profiles.include=oauth
만약 github와 연동하고 있다면 .gitignore에 application-oauth.properties를 추가한다.
build.gradle에 스프링 시큐리티 관련 의존성을 하나 추가한다.
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client
- User entity와 User repository 생성
- spring security 설정
- 구글 로그인 이후 가져온 사용자의 정보들을 기반으로 가입 및 세션 저장 등의 기능 구현
- user 데이터를 세션에 저장하기 위해 직렬화 기능을 가진 DTO 생성
- 로그인 화면 구성
우와 멋지네요~