1. OAuth란?

 

  OAuth2.0이란 각종 웹, 모바일 어플리케이션에서 타사의 API를 사용하고 싶을 때 권한 획득을 위한 프로토콜(Protocol)이다.

  간단하게는 로그인에서부터 다양한 기능의 API를 안전하고 편하게 사용하게 해준다.

  많은 웹 서비스와 모바일 어플리케이션을 이용하면서 다음과 같은 문구를 많이 봤을 것이다.

 

“facebook으로 로그인”, “Google 계정으로 로그인”, “Naver로 로그인”

 

  이러한 기능으로 이용하고자 하는 서비스에 대한 회원가입 과정을 거치지 않고 기존에 사용하던 서비스들의 계정으로 로그인을 진행할 수 있다. 이것이 OAuth2.0의 장점이다. 특히 회원가입과 같은 절차는 고객의 개인정보를 다루는 일이므로 고객뿐만 아니라 서비스를 제공하는 회사입장에서도 부담스러운 일이 아닐 수가 없다.

 

간단하게 과정을 살펴본다면 위의 버튼들을 클릭하여 로그인을 진행하다보면 타사 서비스(Google, facebook)에 로그인이 되어있지 않다면 먼저 로그인을 요구하는 입력창이 나올 것이고, 로그인을 한 후에는 권환 획득에 관한 수락을 요구하는 창이 뜰 것이다. 이러한 과정들을 거쳐 로그인에 성공하게 된다.

 

 

2. OAuth의 장점

 

  2 - 1) 위에서 언급했듯이 서비스마다 회원가입을 할 필요없이 기존의 사용하던 타사의 정보를 이용하여 로그인을 진행할 수 있다.

 

  2 - 2) 보안이 우수한 타사의 계정을 이용하여 직접 타사의 아이디와 비밀번호를 입력하던 예전 방식보다 안전한 사용을 제공한다.

 

  2 - 3) 정보는 회원 정보뿐만 아니라 기타 API에 대한 정보에도 접근이 가능한다.

 

  이렇게 사용자들이 타사에서 사용하고 있는 서비스들에 대한 정보를 가져와 가공하여 보다 가치있는 결과물을 사용자들에게 제공할 수 있습니다. 가장 많이 이용되는 것은 바로 타사의 인증된 회원정보를 통한 로그인입니다.

 

 

 

3. Auth의 의미

 

  Authentication 와 Authorization

 

  3 - 1) Authentication : 인증

 

  3 - 2) Authorization : 허가

 

OAuth2.0은 타사 서비스(Google, facebook)의 기능에 우리가 만든 서비스의 접근을 허락(Authorization)하여 사용자를 인증 (Authentication)한다.

 

 

 

4. OAuth를 이용한 Authorization 과정

 

용어 의미
Client 우리가 만든 서비스(웹, 앱 애플리케이션)
Resource Server 기능을 제공하는 타사(Google, Facebook)
Resource Owner 우리가 만든 서비스를 이용하려는 사용자

 

  4 - 1) 먼저 우리가 만든 Client가 Resource Server의 API를 사용한다고 Resource Server에 등록을 해야한다.

  

출처 : https://baked-corn.tistory.com/m/29

  등록을 하게 되면 Resource Server는 이 Client를 식별할 수 있는 Client ID와 Client Secret을 발급한다.

 

 

 

  4 - 2) 이 후 Resource Owner가 우리가 만든 Client에서 Google 계정으로 로그인을 통해 로그인을 요청한다.

 

출처 : https://baked-corn.tistory.com/m/29

 

 

 

  4 - 3) Client는 Resource Owner에게 Resource Server의 로그인 창을 띄어준다.

 

출처 : https://baked-corn.tistory.com/m/29

 

 

  4 - 4) Resource Owner는 Client가 Resource Server에 있는 자신의 정보의 접근에 대한 동의를 구하는 창을 보고 동의를 하게 된다.

 

출처 : https://baked-corn.tistory.com/m/29

 

  즉 해당 서비스가 사용자의 Google 로그인 정보에 대해 접근을 허락하는지 안하는지에 대해 결정하는 과정이다.

  이 과정에서 수락을 하지 않는다면 정보가 제공되지 않기 때문에 로그인은 할 수 없다.

 

 

  4 - 5) 만일 Resource Owner가 Client에게 Resource Server에 있는 자신의 정보에 접근을 허락하면 Resource Server는 Client에게 일련의 암호화된 코드를 제공하고 이 코드와 함께 해당 정보의 사용 등록을 했는지의 여부를 판단하는 Client ID와 Client Secret을 함께 보내 모든 것이 일치한다면 최종 접근 권한 부여의 암호인 Access Token을 발급하게 된다.

 

출처 : https://baked-corn.tistory.com/m/29

 

 

 

5. 요약

 

  이러한 Authorization의 과정을 걸쳐 Client는 Resource Server의 특정 정보에 대한 접근 권한을 얻게 된다.

  또한 해당 정보를 토대로 Resource Owner를 인증(Authentication)하여 Client의 서비스를 이용할 수 있게 한다.

  이렇게 OAuth2.0을 사용하면 보다 편리하고 안전하게 여러 검증된 API를 사용할 수 있으며 사용자의 편의성도 높일 수 있다.

 

 

 

출처 : https://baked-corn.tistory.com/m/29

'Authentication' 카테고리의 다른 글

JWT  (0) 2020.12.15
Cookie & Session  (0) 2020.12.04

+ Recent posts