스프링 OAuth (1)

OAuth2에 대하여 알아보자.
요즘 왠만한 사이트에서는 자체 회원가입과 더불어 소셜 로그인 기능을 지원한다.
필자도 소셜로그인으로 접속하는 사이트가 많다.(편하니까^.^)
이때 OAuth2.0이라는 기술이 사용되는 것을 알고있었으며 아직 한번도 적용시켜본 적이 없고 어떠한 원리로 구현되어있는지 모른다.
따라서 이번 포스팅에서는 이에대한 스프링의 지원을 살펴보려고한다.
또한 사용자인증과 관련된 부분이므로 스프링 시큐리티에서는 이를 어떻게 호환하는지도 살펴보자.

역시나 모든 내용은 공식문서를 토대로 작성하는 것임을 알립니다.

개요

스프링 시큐리티의 OAuth 2.0지원은 아래 두가지의 기능셋으로 구성된다.

  • OAuth2 Resource Server
  • OAuth2 Client

이중에서 우리가 중점적으로 알아볼 부분은 소셜로그인 즉, OAuth2 Login을 지원하는 OAuth2 Client에 대하여 집중적으로 알아볼 것이다.
소셜로그인은 주로 클라이언트 애플리케이션이 서드파티 인증 서버와 상호작용 하는 방식으로 처리한다.

학습하기를 원하는 OAuth2 로그인, OAuth2 클라이언트를 분석해보자.

OAuth2 Log In

공식문서에서 이번챕터 내용을 구글 로그인 예제를 따라가는 방식으로 제공한다. 그대로 따라가보자.

Initial Setup

일단 로그인에 OAuth 2.0 인증 시스템을 사용하려면 Google API 콘솔에서 프로젝트를 설정하여 OAuth 2.0 Credential을 얻어야한다.
이에대한 부분은 구글에서 다른 블로그를 참조하여 발급받도록 하자. 잘 나와있다.

Setting the Redirect URI

최종 사용자가 Google 로그인이 완료된 후 리다이렉션되는 경로를 설정해야한다.
승인된 리디렉션 URI에 http://localhost:8080/login/oauth2/code/google와 같이 잘 설정되어있는지 확인하자.

  • 디폴트URI 템플릿은 {baseurl}/login/oauth2/code/{registrationId}이며 registrationId는 ClientRegistration의 식별자이다.

Configure application.yml

spring:
  security:
    oauth2:
      client:
        registration:	
          google:	
            client-id: {google-client-id}
            client-secret: {google-client-secret}
  • spring.security.oauth2.client.registration는 OAuth Client 프로퍼티에 대한 기본 접두어이다.
  • 기본 속성 접두사 다음에는 google과 같은 ClientRegistration의 ID가 온다.

이제 localhost:8080경로에 접근하면 구글로그인 창으로 넘어가며, 로그인이 가능해진다.

아주 간략하게 찍먹만 해봤는데 내용이 많고, 먼저 시큐리티 환경을 설정하고 진행해야할 필요가 있을것 같아 직접 적용시켜본 뒤 어떠한 방식으로 구현했는지 적는게 더욱 도움이 될것같다.