탕구리's 블로그

OAuth2.0에 대해서 알아보자! 본문

Conception

OAuth2.0에 대해서 알아보자!

탕구리당 2019. 10. 17. 00:18
반응형

OAuth

- OAuth는 인증을 위한 오픈 스탠다드 프로토콜이다.

- 외부의 서비스 기능을 다른 어플리케이션에서 사용할 수 있다.

- OAuth2.0은 1.0과 호환되지 않지만 인증 절차가 간략하다.

 

OAuth와 로그인의 차이

- 로그인은 A 서비스의 회원이 A 서비스를 이용하기 위해서 하는 경우이다.

- OAuth의 경우 B 서비스는 A 서비스의 기능을 일부 사용하기 위해 A에서 제공하는 방식을 통해서 인가와 인증을 진행한다.

- B 서비스는 OAuth를 통해 OAuth를 제공하는 서비스의 일부 기능을 사용할 수 있다.

- 예를들어 Facebook을 통해 OAuth를 진행할 경우 Facebook에서 제공하는 API에 대해서 사용이 가능하다.(피드 작성, 친구 목록 불리기 등..)

 

카카오 플랫폼의 OAuth

- 다음은 카카오 디벨로퍼 사이트에 나와있는 카카오 로그인에 대한 개발 연동 가이드이다.

- 카카오 로그인 기능은 OAuth 2.0을 지원합니다

- 다음은 카카오 플랫폼 서비스에서 제공하는 가장 일반적OAuth 인증의 과정입니다.

 

> 사용자는 카카오계정으로 로그인 버튼을 클릭합니다.

> 카카오톡 앱에 연결된 카카오 계정의 자격정보(Credentials)를 통해 사용자를 인식합니다.

> 자격정보가 올바르다면 사용자(Resource Owner)로부터 접근 자원에 대한 동의/허가를 얻습니다.

> 위 3까지 성공적으로 수행되었다면 인증 코드(Authorization Code)가 발급됩니다. 해당 인증 코드는 Redirection URI를 기반으로 Third
앱에 전달됩니다.

> Third 앱에서는 전달받은 인증 코드를 기반으로 사용자 토큰(Access Token, Refresh Token)을 요청하고 얻게 됩니다.

카카오에서는 OAuth2.0이 작동하는 방식이며 v2.0에서 사용 가능한 다양한 방식 중에서도 Authorization Code Grant 방식을 사용하는 것 같다.

Authorization Code Grant 방식이란 무엇일까?

OAuth2.0 Authorization Code Grant 방식

 

- OAuth2.0에서 주로 사용하는 인증방식이다.

- 해당 방식에서 알아야할 개념에는 총 4가지의 큰 개념이 존재한다.

- 우선 아래의 예를 살펴보자

 

자! 예를 들어 보자 내가 아주 아주 열심히 애플리케이션을 하나 만들었다고 가정하자.

나는 이 애플리케이션에 카카오 로그인을 연동하였다. 사용자가 내 애플리케이션을 이용할 경우 카카오 로그인 버튼을 누름과 함께 카카오 "아이디와 비밀번호"를 입력하라는 팝업(?)이 하나 뜰 것이다.

카카오 서비스에 로그인하는 과정이 OAuth에서 "인증" 과정이며 이 과정을 통해 "인가 / 허가" 또한 진행되는 것 같다.

그 후 나의 앱은 카카오 플랫폼에서 제공하는 다양한 기능들을 사용할 수 있다.(친구 목록 불러오기, 카카오 스토리 작성 등..)

- 여기서 Resource Owner, Client, Authorization Server, Resource Server는 각각 누구일까?

- Resource Owner : 각종 정보의 주인, 일반적으로 서비스를 이용하는 사용자가 된다.

- Client : 여기서 Client는 OAuth를 사용하는 주체. 즉, 내가 만든 애플리케이션이 된다.

- Authorization Server : 인증과 인가 절차를 담당하는 제3의 서버이다.

 

- Resource Server : oAuth의 사용을 통해 Client가 원하는 보호된 정보(Resource)를 제공해주는 주체이다.

Auth Code(Credential), AccessToken, RefreshToken

- 다음은 위의 세 가지 주제에 대해 정리해보자

- 위의 내용과 시퀀스 다이어그램을 통해 우리는 사용자로부터 입력받은 정보를 통해 Authorization Server를 통해 "인증"과 "인가" 과정을 거쳐야 한다.

- 이 과정에서 Client는 Authorization Server로부터 Credential/ Authorization Code를 받게 된다.

- Client는 해당 코드를 통해 AccessToken를 발급한다.

- AccessToken를 통해 Client는 Resource에 접근할 수 있는 권한을 얻게 된다.

- AccessToken는 일정 기간 후 사용권한이 expired 되고, 우리는 RefreshToken을 통해 새로운 AccessToken를 발급받게 된다.

 

 

 

이렇게 OAuth가 무엇인지, 카카오 플랫폼에서는 어떤 인증방식을 사용하고 있는지, 해당 인증 방식은 어떤 과정을 통해 기능을 제공하는지 알아보았다. 사실 이 내용을 지금까지 세 번은 찾아본 거 같은데 볼 때마다 새로운 이유가 무엇인지 너무나 궁금하다. 역시 가볍게 훑어본 건 기억이 잘 안 나는 거 같다. 앞으로 더 꼼꼼하게 공부하고 정리하는 습관을 가져야겠다.

반응형
Comments