RATSENO

[SpringBoot]Spring Boot Security + OAuth 2.0 [Authorization code grant] (1) 본문

DEV/SPRING

[SpringBoot]Spring Boot Security + OAuth 2.0 [Authorization code grant] (1)

RATSENO 2020. 9. 14. 11:40

OAuth (Open Authorization)는 보호된 데이터를 게시하고 상호 작용하는 간단한 방법입니다.

인터넷에서 토큰 기반 인증 및 권한 부여를위한 개방형 표준입니다.

이를 통해 최종 사용자의 계정 정보는 사용자의 암호를 노출하지 않고도 Facebook과 같은 타사 서비스에서 사용할 수 있습니다. OAuth 사양은 액세스 토큰을 획득하기위한 5 가지 권한을 설명합니다

  • Authorization code grant
  • Implicit grant
  • Resource owner credentials grant
  • Client credentials grant
  • Refresh token grant

이번 포스팅에서는 Authorization code grant 에 대해서 진행하겠습니다.

 

먼저 이해를 위해 www.quora.com  사이트를 예를 들어서 설명하겠습니다.

우리는 Quora는 사이트를 이용하려 합니다. 처음 사용하는 것이기 때문에 가입이 필요합니다.

하지만 위의 사진에서 볼수 있듯이 구글로 계속하기,  페이스북으로 계속하기  버튼이 보입니다.

이 기능을 통해 우리는 Quora에 직접 가입할 필요 없이 구글, 페이스북 등의 서드파티를 통하여 권한을 획득하게 되고 Quora라는

어플리케이션을 사용할 수 있게 됩니다. 이러한 처리 방법에 요번에 설명할 OAuth2.0 이 사용되고 있습니다.

 

위의 예에서 4가지 요소를 정리할 수 있습니다.

  • Resource Owner - Quora를 사용하려 하는 가입자(사용자)
  • Client Application - Quora라는 사이트, 어플리케이션
  • Resource Server - 사용자의 리소스정보(프로필 정보 등)을 가지고 있는 google 또는 facebook
  • Authorization Server - Resouce Server 여기서 google 또는 facebook은 보호하고 있는 사용자 계정 정보등을 호스팅 하고 Authoriztion Server는 사용자의 정보를 검증한 후 어플리케이션(여기서는 Quora)에게 Access Token을 발급한다.

앞으로 진행할 예제에서 우리는 client applicationresource server를 구현할 것입니다.

resource owner는 OAuth를 사용하여 client applicationresource server가 데이터를 공유할 수 있도록, resource server에 권한을 부여할 것입니다.

 

먼저 client applicationresource server와 연결되어있는 authoriztion server에 등록해야 합니다.

보통 이 과정은 한번만 진행하면 되며, 등록을 취소하지 않는 한 유효합니다.

네이버 아이디로 로그인, 카카오톡으로 로그인 등 여러가지 open api를 사용시 앱 등록하는 부분이라고 생각하시면 될것 같습니다.

 

authoriztion serverclient application을 등록 시 authoriztion serverclient application에게 고유한 client idsecret key를 부여합니다.

 

Quora 사이트를 예를 들어 보자면, 구글로 계속하기 버튼을 클릭 시 뜨는 계정 선택 팝업에서,

Quora가 Google에 application을 등록 시 발급 받은 cliend_id를 확인할 수 있습니다.

 

client application(여기서는 Quora)가 OAuth2.0을 사용하여 goole 간에 발생하는 인증 프로세스는 간단하게 아래와 같습니다.

위의 흐름과 유사하게 Client Application 과 Resoure Server을 개발해 보겠습니다.

OAuth를 사용하여 Resoucer Server는 Client Application과 데이터를 공유합니다. 

진행될 예제에서는 Client Application이 이미 Resoucer Server에 등록되어

고유한 Client_ID 와 Secret_Key를 발급받은것으로 가정하여 진행하겠습니다.

 

다음 포스팅에서 실제 개발을 해보겠습니다..!

 

출처: www.javainuse.com/spring/spring-boot-oauth-introduction

 

Comments