본문 바로가기

WEB

[Spring boot] Spring Security에 구글 로그인 연동하기

스프링 시큐리티에 구글 로그인을 연동해봅시다.

 

스프링 시큐리티에 대한 설명은 여기에서 확인하실 수 있습니다.

https://e-you.tistory.com/454

 

[Spring Security] Session 기반 인증 방식 VS Token 기반 인증 방식

먼저, `스프링 시큐리티`는 스프링 프레임워크에서 애플리케이션의 인증(Authentication)과 인가(Authorization)를 쉽게 구현할 수 있도록 도와주는 보안 라이브러리입니다. 주로 웹 애플리케이션이나 Re

e-you.tistory.com


1. 구글 서비스 등록

 

하단의 구글 사이트로 이동해서 내가 만들 프로젝트 정보를 입력해주어야합니다.

https://console.cloud.google.com

 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

 

 

구글 사이트에 들어가서 상단의 google cloud 오른쪽 버튼을 클릭해줍니다.

 

 

프로젝트 선택 창이 나오는데 여기서 새 프로젝트를 클릭해줍니다.

 

 

 

등록할 프로젝트 이름을 입력해주고 만들기를 클릭합니다.

 

 

 

해당 프로젝트로 들어와준 후 왼쪽의 햄버거 탭 클릭 -> API 및 서비스 -> 사용자 인증 정보에 들어가줍니다.

 

 

사용자 인증 정보 만들기 클릭 -> OAuth 클라이언트 ID 에 들어가줍니다.

 

 

동의 화면 구성을 클릭해줍니다.

 

User Type을 외부로 설정해주고 만들기를 클릭해줍니다.

 

 

앱 정보에 앱 이름과 사용자 지원 이메일을 입력해줍니다. 하단에 있는 개발자 연락처 정보도 입력해줍니다.

 

 

범위 추가 또는 삭제 버튼을 누른 후 email, profile, openid를 추가해주고 저장해줍니다.

 

 

 

사용자 인증 정보 -> 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID 만들기에 들어가줍니다.

 

 

 

 

애플리케이션 유형을 웹 애플리케이션으로 선택해줍니다. 

승인된 리디렉션 URI에 http://localhost:8080/login/oauth2/code/google 를 입력해줍니다.

 

스프링 부트 2 버전에서 소셜 로그인 기능을 구현할 때, 스프링 시큐리티는 기본적으로 OAuth 2.0 인증 과정을 관리해 주며, 인증 후 리다이렉트되는 URL을 자동으로 설정해 줍니다.

즉, {도메인}/login/oauth2/code/{소셜서비스코드} 형태로 리다이렉트 URL이 기본 제공되므로, 이를 처리하기 위한 별도의 컨트롤러를 만들 필요가 없습니다.

지금은 로컬 개발 환경에서 작업 중이므로 http://localhost:8080/login/oauth2/code/google과 같이 설정하면 됩니다.

이후 배포 단계에서 실제 도메인(예: AWS 서버 URL)로 서비스를 제공할 경우에는 해당 서버 주소를 리다이렉트 URL로 추가 설정해 주어야 원활하게 인증을 진행할 수 있습니다.

 

 

클라이언트 ID와 클라이언트 보안 비밀번호를 메모장에 저장해둡니다.

 

 


2. 스프링 시큐리티에 적용하기

 

server:
  port: 8080
  servlet:
    context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul
    username: root
    password: 

  jpa:
    hibernate:
      ddl-auto: update #create update none
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: true

  security:
    oauth2:
      client:
        registration:
          google: # /oauth2/authorization/google
            client-id: # 여기에 client-id를 입력해줍니다.
            client-secret: # 여기에 client-secret을 입력해줍니다.
            scope:
              - email
              - profile

 

 

해당 application.yml 을 설정해주시고 아래의 사이트에서 코드 다운받으면 됩니다. 

https://github.com/Lee-YuGyeong/security

 

GitHub - Lee-YuGyeong/security: spring-security 구글, 페이스북, 네이버 연결

spring-security 구글, 페이스북, 네이버 연결. Contribute to Lee-YuGyeong/security development by creating an account on GitHub.

github.com