[Oauth] Oauth2.0의 등장배경, 역할 및 기본 정보

oauth2.0 이해 및 구현 - 1

Posted by owin2828 on 2020-03-11 14:54 · 3 mins read

들어가기 앞서

Oauth2.0의 기초에 대해 알아보고자 한다. 많은 자료가 있지만, 정확한 이해를 위해 oauth2.0의 개념부터 구현까지 직접하며 글을 남기고자 한다.

자세한 개념 설명은 다음과 같은 더 좋은 글들을 찾아보기 바란다.
생활코딩 oauth2.0

1. 인증 vs 인가


본격적으로 oauth2.0를 살펴보기 전에 다음과 같은 용어의 의미를 짚고 가자.

  • 인증(Authentication)
    인증이란, 신원을 확인 하는 행위이다.
    즉, 어떠한 주권을 행사할 자격이 있는지를 검증하는 단계이다.
    그렇기 때문에 인증을 한다고 해서, 주체에게 새로운 권한이 부여되지는 않는다.
  • 인가(Authorization)
    인가란 승인이라고도 불리는데, 권한을 부여하는 행위이다.
    즉, 인가를 받은 대상이 새로운 자격을 얻게 되어 제한된 리소스에 접근이 가능하다.

2. Oauth2.0의 등장배경


권한이 각 사용자에게 부여되는 경우에는 반드시 권한 소유자에 대한 인증절차를 거치게 된다. 웹에서 이러한 가장 보편적인 방법은 ID/PW 방식으로 로그인하는 것이다. 사용자가 입력한 정보를 서버에 전송하여 인증이 성공할 경우, 쿠키세션 값을 저장함으로써 권한이 부여된다. 이런 방식은 한 번의 로그인으로 세션이 종료되기 전까지 제한된 기능을 수행할 수 있어, 간편하고 효율적인 방식으로 널리 사용된다. 하지만 이러한 쿠키 기반 권한 부여는 다음과 같은 단점을 지닌다.

  • 서버에 요청이 올때마다 DB를 통해 현재 상태를 매번 확인하는 낭비가 발생한다.
  • 모바일 앱에 적합하지 않다.
  • 서로 다른 서비스 간에 정보를 공유하기 어렵다.

이러한 단점을 해결하기 위해 IETF는 Oauth라는 프레임워크를 만들게 된다.

oauth1과 oauth2는 완전히 다른 프로토콜이며, 호환되지 않는다.


3. Oauth2.0의 4가지 역할


Oauth2.0의 시나리오에는 다음과 같은 4가지 역할이 존재한다.

Oauth2 역할, 출처: http://tutorials.jenkov.com/oauth2/roles.html

  1. Resource Owner
    사용자로서 자신의 리소스에 대한 접근 권한을 가지고 있는 주체이다.
  2. Client
    사용자가 접근하는 서비스로서 사용자의 데이터에 대한 요청을 보내는 주체이다.
  3. Resource Server
    사용자의 데이터를 보유한 기관으로서 유효한 권한을 부여받은 client가 요청할 경우 제공한다.
  4. Authorization Server
    사용자의 데이터에 접근할 권한을 제공하는 서버이다. client의 요청에 따라 사용자에게 정보제공 동의를 받은 후, 권한을 부여한다.

    규모가 작을 경우, Resource Server와 Authorization Server를 하나의 서버로 구현하기도 한다.

4. Oauth2.0의 기본 정보


Oauth2.0에는 다음과 같은 세 가지의 기본 정보가 존재한다.

  1. 등록정보
    서비스를 제공하는 Client는 사전에 Authorization Server에 등록해야한다. 새로운 서비스가 출시될 때마다 정보를 갱신하여 제출한다.
  2. Redirect URI
    Authorization Server는 사용자가 정보제공 동의를 하게되면 사용자를 등록된 Redirect URI로 이동시킨다. 만약 등록되지 않은 Redirect URI를 담은 요청이 들어오면 무효 처리한다.
  3. Client ID & Client Secret
    새로 등록하는 Client는 Authorization Server로 부터 Client IDClient Secret을 발급받는다. Client ID는 노출되어도 상관 없지만, Client Secret는 절대 노출되어서는 안된다.

끝마치며

Oauth2.0에 대하여 간략하게 알아보았다. 다음 포스팅에서는 oauth2.0의 4가지 인증 방식에 대하여 알아볼 예정이다.