쉬운 프로그래밍

[Spring Boot] OAuth 2.0 기본 세팅 본문

Programming/Spring Boot

[Spring Boot] OAuth 2.0 기본 세팅

쉬운형 2021. 1. 29. 16:10

스프링 시큐리티는 막강한 Autherification, Authorizaiton 기능을 가진 프레임워크이다.

 

거의 스프링 기반 앱에서 보안을 위한 표준으로 사용된다.

 

그럼 스프링 시큐리티와 OAuth 2.0을 통해 소셜 로그인 기능을 구현해보자

 

 

1. 구글 서비스 등록

 

먼저 구글 클라우드 플랫폼에 들어간다.

cloud.google.com/console.cloud.google.com/

 

클라우드 컴퓨팅 서비스  |  Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI 및 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

 

위 URL에 접속해서 프로젝트 선택을 클릭한다.

 

 

 

새 프로젝트 클릭후 서비스 이름을 입력한다.

 

 

생성한 프로젝트를 선택한 후 API 및 서비스 - 사용자 인증 정보 버튼 클릭

 

 

다음으로 사용자 인증 정보 만들기를 클릭한다.

 

사용자 인증 정보에는 여러 메뉴가 있는데 소셜 로그인은 OAuth 클라이언트 ID를 통해 구현한다.

 

아래와 같이 OAuth 클라이언트 ID를 선택한다.

 

이후 동의 화면을 입력해야하는데 프로젝트 상황에 맞게 입력한다. 어려운 것은 없을 것이다.

 

동의 화면 구성이 끝났으면 저장을 한 후 OAuth 클라이언트 ID 만들기 화면으로 바로 이동한다.

 

먼저 어플리케이션 유형과 서비스 이름을 입력해준다.

 

 

그 다음으로 아래 항목을 입력해줘야한다.

 

 

승인된 리디렉션 URI 개념은 아래와 같다.

 

1. 서비스에서 파라미터로 인증 정보를 줄 때, 인증이 성공하면 구글에서 리다이렉트할 URL

 

2. 스프링 시큐리티에서는 기본적으로 /login/oauth2/code/{소셜서비스코드}로 리다이렉트 URL 지우ㅝㄴ

 

3. 사용자가 별도로 리다이렉트 URL을 지원하는 Controller 만들 필요 X, 시큐리티 자체지원

 

 

현재는 서비스 단계가 아니기 때문에 위와 같이 입력한 후 등록한다.

 

등록을 마치면 아래와 같이 클라이언트 정보를 확인할 수 있다.

 

그 다음 client id와 client secret 코드를 프로젝트에서 설정해야한다.

 

위에서 이름탭을 클릭하면 아래에서 확인할 수 있다.

 

 

프로젝트에서 client id와 client secret 코드를 설정하기 위해서는 application-oauth.properties 파일을 생성한다.

 

그리고 해당 파일에 client id와 client secret 코드를 작성한다.

 

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

많은 예제에서는 마지막줄의 scope를 별도로 작성하지 않는다.

 

디폴트 값이 openid, profile, email이기 때문이라고 한다.

 

위 예제에서 강제로 profile과 email을 등록한 이유는 OpenId라는 scope가 있으면 open id provider로 인식 되게 때문이다.

 

이렇게 되면 OpenId Provider인 서비스(구글)과 다른 서비스(네이버, 카카오 등)을 나눠서 각각 OAuth2Service를 만들어야 하기 때문이다.

 

하나의 OAth2Service로 사용하기 위해 openid scope를 빼고 진행한다.

 

위 과정을 마쳤으면 application.properties에서 작성한 파일을 포함하도록 application.properties에 다음과 같은 코드를 추가한다.

 

spring.profiles.include=oauth

 

이상 기본적인 세팅은 끝~

'Programming > Spring Boot' 카테고리의 다른 글

[Spring Boot] Spring Security Security Config  (0) 2021.02.02
[Lombok] @RequiredArgsConstructor  (0) 2021.02.01
REST API  (0) 2021.01.26
스프링 빈(Bean)  (0) 2021.01.21
[Spring Boot] 공식 레퍼런스 참고 방법  (0) 2021.01.07
Comments