본문 바로가기
WEB

OAuth 2.0 기본 개념과 동작원리

by 개미가되고싶은사람 2024. 6. 27.

목차

    OAuth 2.0은 현대 웹 애플리케이션의 인증 및 권한 부여 메커니즘에서 중요한 역할을 수행하고 있다. 이 글에서는 OAuth 2.0의 기본 개념과 동작 원리를 다루며, OAuth2.0 등장 배경과 OAuth 2.0의 동작 메커니즘을 중심으로 설명해 보겠습니다!!!👨‍🏫👨‍🏫

     

    1. OAuth 2.0이란 무엇인가?

       - OAuth 2.0은 웹 애플리케이션과 서비스 간의 안전한 인증 및 권한 부여를 위한 표준 프로토콜입이다
       - 이 프로토콜은 사용자가 자신의 자격 증명을 제공하지 않고도 다른 애플리케이션이 자신의 리소스에 접근할 수 있도록 합니다.

     

     

     


     

     

     

    2. OAuth2.0 등장 배경

       - OAuth 2.0은 기존의 OAuth 1.0의 복잡성과 보안 문제를 해결하기 위해 개발되었습니다.
       - OAuth 1.0은 서명 기반 인증을 사용했으나, 이는 구현과 유지보수가 어렵다는 단점이 있었습니다.
       - 이러한 문제를 해결하고 더 간단하고 유연한 인증 메커니즘을 제공하기 위해 OAuth 2.0이 도입되었습니다.

     

    OAuth 1.0 단점의 자세한 내용은 아래 링크를 참고하면 볼 수 있다.

    https://datatracker.ietf.org/doc/html/rfc6749

     

    RFC 6749: The OAuth 2.0 Authorization Framework

    The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowi

    datatracker.ietf.org

    https://velog.io/@duck-ach/SSO-OAuth1.0-OAuth2.0

     

    [ OAuth ] OAuth1.0 & OAuth2.0

    Open Authorization의 약자로 인터넷 사용자들이 아이디와 비밀번호를 제공하지 않고도 Access 권한을 얻을 수 있도록 하는 권한부여 산업 표준 프로토콜이다.인터넷 산업이 발달하면서 사이트가 증가

    velog.io

     


     

     

    3. OAuth 2.0의 동작 메커니즘

       - OAuth 2.0의 기본 동작은 네 가지 주요 역할을 통해 이루어집니다.


         1. 리소스 소유자 (Resource Owner)

                사용자로, 자신의 리소스를 보호하고 액세스를 허용하거나 거부하여 액세스를 제어할 수 있는 주체자
         2. 클라이언트 (Client)

                리소스 소유자를 대신해 리소스에 접근하려는 애플리케이션입니다.
         3. 인증 서버 (Authorization Server) 

                리소스 소유자의 자격 증명을 확인하고, 액세스 토큰을 발급합니다.
         4. 리소스 서버 (Resource Server)  

               클라이언트가 액세스 토큰을 사용해 접근하는 서버

     

    이제 사진을 보면서 OAuth 2.0 동작원리에 대해서 자세하게 알아보겠습니다.!!

     

     

    1~2. 로그인 요청

    사용자가 로그인을 시도하면(로그인 요청을 보내면), 클라이언트는 자신의 Client_Id와 Redirect_URL 등을 쿼리 스트링으로 포함시켜 Authorization Server에게 요청을 보냅니다

     

     

    3~4. 로그인 페이지 제공 및 ID/PW 제공

    Authorization Server가 제공하는 URL로 이동된 사용자는 ID/PW를 입력하여 로그인 시도합니다

     

    5~6. Authorization Code 발급 및 Redirect URI로 이동

    ID/PW를 이용하여 사용자 인증에 성공하면 Authorization Server는 인증 코드(Authorization Code)를 제공받게 되고, 인증 코드(Authorization Code)를 포함해 사용자를 Redirect_URI로 이동합니다

     

    참고: 인증 코드는 Access Token을 발급받기 위한 임시 코드로 수명이 짧습니다.

     

    7~8. Access Token 발급

    클라이언트는 Authorization Server에 따라 Client_Id, Redirect_URI, code, grant_type 및 기타 매개변수와 함께 인증 코드(Authorization Code)를 Authorization Server에 보냅니다. 그러면 Authorization Server는 리소스를 액세스하는 데 사용되는 Access Token을 발급합니다.

     

    참고: 액세스 토큰은 유출되어서는 안 되며 제3자의 가로채기를 방지하기 위해 HTTPS를 통해서만 전송되어야 합니다.

     

    9. 로그인 성공

    Access Token까지 발급 받는 과정까지 끝났다면 사용자는 로그인에 성공하였음을 알게된다.

     

    10~13. Access Token을 이용한 리소스 접근

    사용자가 Resource Server의 리소스가 필요한 기능을 클라이언트에 요청하고, 클라이언트는 로그인 과정에서 발급받은 Access Token을 사용하여 사용자를 대신하여 리소스에 접근하고 요청한 서비스를 제공합니다.

     


     

     

    4. OAuth 2.0 인증 과정

       - OAuth 2.0의 인증 과정은 다음과 요약할 수 있습니다.
         1. 사용자가 애플리케이션에 로그인합니다.
         2. 클라이언트는 인증 서버에 인증 요청을 보냅니다.
         3. 인증 서버는 사용자의 자격 증명을 확인하고, 클라이언트에 Access Token을 발급합니다.
         4. 클라이언트는 사용자를 대신해 Access Token을 사용하여 요청한 리소스(서비스)를 제공합니다..

     

     

     




    5. OAuth 2.0의 장점

       - 보안 강화: 사용자의 자격 증명을 직접 제공하지 않아 보안성이 높습니다.
       - 유연성: 다양한 인증 및 권한 부여 시나리오에 적용할 수 있습니다.
       - 확장성: 여러 서비스와 애플리케이션 간의 통합이 용이합니다.

     

     

     

    참고 자료

    https://hudi.blog/oauth-2.0/

    https://f-lab.kr/insight/understanding-oauth-2-0