OAuth 개념정리

Take!·2023년 11월 10일
0

React

목록 보기
2/3
post-custom-banner

OAuth

  • 우선 OAuth란 무엇인지 OAuth에 대한 공식적인 정의를 살펴보자.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 

OAuth 2.0

  • 인증을 위한 개방형 표준 프로토콜이다. 이 프로토콜에서는 Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공한다.
    구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능이 대표적이다.

역할

  • Resource Owner : 리소스 소유자이다 본인의 정보에 접근할 수 있는 자격을 승인하는 주체이다.

  • Client : Resource Owner의 리소스를 사용하고자 접근 요청을 하는 어플리케이션이다.

  • Resource Server : Resource Owner의 정보가 저장되어있는 서버.

  • Authorization Server : 권한 서버. Access Token을 발급하여 권한을 부여하는 역할 수행

주요 용어

  • Authentication (인증) 인증, 접근 자격이 있는지 검증하는 단계입니다.
  • Authorization (인가) 자원에 접글할 권한을 부여하고 리소스 접근 권한이 담긴 Access Token을 제공합니다.
  • Access Token 리소스 서버에게서 리소스 소유자의 정보를 획득할 때 사용되는 만료 기간이 있는 Token입니다.
  • Refresh Token Access Token 만료시 이를 재발급 받기위한 용도로 사용하는 Token입니다.

권한 부여 방식

  • 총 4가지의 권한 부여 방식이 있다.

1. Authorization Code Grant | 권한 부여 승인 코드 방식

  • 권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식이다.

  • 권한 부여 승인 요청 시 response_type을 code로 지정하여 요청한다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저를 띄워 출력한다. 이 페이지를 통해 사용자가 로그인을 하면 권한 서버는 권한 부여 승인 코드 요청 시 전달받은 redirect_url로 Authorization Code를 전달한다. 이 Code는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환된다.

2. 암묵적 승인 방식

  • 자격증명을 안전하게 저장하기 힘든 클라이언트에게 최적화된 방식이다.
    여기서는 승인 코드 없이 바로 Access Token이 발급된다. 만료기간을 짧게 설정하여 전달된다.

  • Access Token이 URL로 전달된다는 단점이 있다.

  • 권한 부여 승인 요청 시 response_type을 token으로 설정하여 요청한다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저를 띄워 출력하게 되며 로그인이 완료되면 권한 서버는 Authorization Code가 아닌 Access Token를 redirect_url로 바로 전달한다.

3. Resource Owner Password Credentials Grant │ 자원 소유자 자격증명 승인 방식

  • 간단하게 userName, password로 Access Token을 받는 방식이다.

  • 요점은 이 방식은 권한 서버, 리소스 서버, 클라이언트가 모두 같은 시스템에 속해 있을 때 사용되어야 하는 방식이라는 점이다.

4. Client Credentials Grant | 클라이언트 자격증명 승인 방식

  • 클라이언트의 자격증명만으로 Access Token을 획득하는 방식이다.
  • OAuth2의 권한 부여 방식 중 가장 간단한 방식으로 클라이언트 자신이 관리하는 리소스 혹은 권한 서버에 해당 클라이언트를 위한 제한된 리소스 접근 권한이 설정되어 있는 경우 사용된다. 이 방식은 자격증명을 안전하게 보관할 수 있는 클라이언트에서만 사용되어야 하며, Refresh Token은 사용할 수 없다.

profile
확장 및 유지 보수가 가능한 설계를 지향하는 프론트엔드 개발자!
post-custom-banner

0개의 댓글