inblog logo
|
{CODE-RYU};
    SPIRNG

    [OAuth]OAuth(Open Authorization)

    류재성's avatar
    류재성
    Jun 05, 2024
    [OAuth]OAuth(Open Authorization)
    Contents
    1. OAuth(Open Authorization) 란?2. OAuth의 동작 방식

    1. OAuth(Open Authorization) 란?

     
    💡
    OAuth(Open Authorization)는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. OAuth는 로그인 방식이 아니라 Client Server(내가 만들 서버)가 Resource Server(카카오, 네이버)에게 Resource Owner(고객)의 정보를 대신 접근할 수 있는 권한을 위임받는 방식이다.
     
    notion image
     
    • Resource Owner (자원 소유자): 리소스(정보)의 소유자, 일반적으로 최종 사용자
    • Client (클라이언트): 리소스 소유자의 리소스에 접근하려는 애플리케이션. 예를 들어, 타사 앱이나 웹사이트
    • Resource Server (리소스 서버): 보호된 리소스를 호스팅하는 서버. 클라이언트는 인가 토큰을 사용해 리소스 서버에 접근
     
     

    2. OAuth의 동작 방식

     

    2.1 권한 부여 코드 방식 (Authorization Code Grant)

    💡
    주로 웹페이지같이 SSR 방식에서 사용된다. 클라이언트 애플리케이션이 자원 소유자의 자원에 접근하기 위해 인가 서버로부터 권한 부여 코드를 획득하는 과정이다.
     
    notion image
     
    1. 사용자 인증
        • 사용자가 클라이언트 서버를 통해 리소스 서버에 접속을 시도한다. 클라이언트 서버는 사용자를 인가 서버로 리디렉션한다.
    1. 사용자 승인
        • 사용자는 리소스 서버에서 로그인하고, 클라이언트 서버가 요청하는 권한을 승인한다. 이 과정에서 scope가 필요하다. scope 는 클라이언트 서버가 리소스 서버에 접근할 수 있는 권한의 범위를 정의하는 매개변수이다.
    1. 인가 코드 발급
        • 사용자가 권한을 승인하면 리소스 서버는 클라이언트에게 인가 코드를 발급한다. 이 코드는 일회용이며, 짧은 시간 동안만 유효하다.
    1. 액세스 토큰 발급
        • 클라이언트 서버는 인가 코드를 리소스 서버에 제출하여 액세스 토큰을 요청한다. 리소스 서버는 클라이언트를 인증하고 유효한 인가 코드인지 확인한 후 액세스 토큰을 발급한다.
    1. 리소스 접근
        • 클라이언트 서버는 발급받은 액세스 토큰을 사용하여 리소스 서버에 요청을 보내고, 보호된 리소스에 접근한다.
     
    💡
    리소스 서버로 부터 받은 토큰은 클라이언트 서버에서 저장하지 않는다. 그 이유는 사용자가 많아져 서버가 늘어나면 다른 서버에서는 토큰이 없어 검증이 불가능하기 때문이다. 따라서 OAuth 인증이 완료되면 리소스 서버로부터 받은 토큰은 사용하지 않고, 클라이언트 서버가 새롭게 만든 토큰을 리소스 오너에게 제공해 이 토큰으로 인증을 한다.
     
     

    2.2 클라이언트 자격 증명 방식(Client Credentials Grant)

    💡
    주소 휴대폰 앱과 같은 CSR 방식에서 사용한다. 클라이언트 자신이 관리하는 리소스 혹은 권한 서버에 해당 클라이언트를 위한 제한된 리소스 접근 권한이 설정되어 있는 경우 사용된다. 한마디로 클라이언트가 Resource Owner 인 경우를 의미한다.
     
    notion image
     
    1. 클라이언트 자격 증명 준비:
        • 애플리케이션은 인가 서버로부터 받은 클라이언트 ID와 클라이언트 시크릿을 가지고 있다. 이 자격 증명은 애플리케이션이 인가 서버에 등록될 때 부여된다.(휴대폰 어플을 받을 때 이미 포함되어있다.)
    1. 토큰 요청:
        • 애플리케이션은 인가 서버에 액세스 토큰을 요청한다. 이 요청은 HTTP POST 방식으로 이루어진다.
    1. 토큰 발급:
        • 인가 서버는 애플리케이션의 자격 증명을 확인한다. 자격 증명이 유효하면, 인가 서버는 애플리케이션에 액세스 토큰을 발급해준다.
    1. 리소스 접근:
        • 애플리케이션은 발급받은 액세스 토큰을 사용하여 보호된 리소스에 접근한다.
    1. 리소스 서버 응답:
        • 자원 서버는 액세스 토큰의 유효성을 한다. 토큰이 유효하면, 요청된 데이터를 애플리케이션에 반환한다.
     
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog