ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sneakers Mania - 카카오 로그인(1)
    Projects/Problem & Solution 2021. 12. 27. 14:54

    OAuth란?

    OAuth의 개념

    OAuth는 Open Authorization의 약자이다.

    OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용된다.

    즉, 애플리케이션의 사용자 비밀번호를 제3자에게 제공하지 않으면서 인증 및 권한 부여를 관리해주는 오픈형 프로토콜이다.

     

     

    예를 들어서, 쇼핑몰과 같은 사이트에 접속할 때 네이버나 카카오로 로그인을 할 수 있는 것처럼 별도의 정보 제공 없이 로그인을 제공하는 플랫폼의 아이디만 있으면 서비스를 이용할 수 있게 해주는 것이 바로 OAuth이다.

     

    OAuth 2.0의 탄생

    웹이 성장하면서 많은 사이트들이 분산 서비스에 의존하게 되고, third-party 애플리케이션들은 다양한 서비스들의 API를 활용하게 되었다.

    이를 위해서는 인증이라는 절차를 거쳐야 했다.

     

    1. OAuth가 나오기 이전에 인증 방법

    OAuth가 나오기 전에는 외부 사이트와 데이터를 연동할 때 인증 방식의 표준이 없었기 때문에 기존의 인증 방식인 ID/Password를 사용했다.

    이 방식은 사용자의 Password가 노출될 가능이 크기 때문에 보안상 매우 취약하다는 단점이 있었다.

    또한, 사용자 정보를 얻은 third-party 애플리케이션은 해당 사이트의 모든 접근 권한을 갖게 되어 어떠한 서비스에도 접근할 수 있게 되었고, 이 third-party 애플리케이션이 사용자의 Password를 변경하게 된다면 사용자는 사이트 이용이 불가능하게 되는 상황까지 발생할 수 있게 된다.

    기본 인증 방식인 ID/Password 방식이 아닐 경우엔, 각자의 회사가 개발한 방법대로 사용자 인증을 하기 때문에 인증방식이 너무 제각각이 돼버렸다.

    이러한 이유 때문에, 좀 더 안전하면서도 사용자 인증(Authentication)과 권한 제어(Authorization)까지 할 수 있는 표준화된 인증방식이 필요했다.

     

    2. OAuth 1.0a의 탄생

    2006년 11월 트위터는 OpenID를 탑재하는 작업을 하고 있었고, 같은 시기에 한 소셜 북마크 사이트에서도 OpenID를 사용한 인증 방법을 필요로 하고 있었다.

    이로 인해, 각 회사의 4명의 웹 개발자가 만나 OpenID를 활용한 API로 인증 및 권한 부여를 동시에 제공하는 인증 프로토콜을 찾다가 결국 적당한 것이 없어서 만든 것이 OAuth 1.0이다.

    2007년 10월에 OAuth core 1.0이 비공식 발표되었지만, 나중에 세션 고정 공격 보안 결함이 발견되어서 이 문제를 개선한 OAuth 1.0a가 2009년 6월에 발표된다.

     

    3. OAuth 2.0의 탄생

    하지만, OAuth 1.0a는 웹 애플리케이션이 아닌 모바일 애플리케이션에서는 사용하기 곤란하다는 단점이 있었다. 또한 절차가 복잡해서 OAuth 구현 라이브러리를 제작하는 것이 매우 어려웠다.

    이러한 문제점을 보완한 OAuth 2.0이 발표되었다. OAuth 2.0에서 크게 달라진 점은 아래와 같다.

     

        1. 디지털 서명이 아닌 HTTPS 사용

        2. Access Token의 만료 기간이 생김

        3. 더 많은 인증 방법을 지원

     

    OAuth 1.0a에서는 HTTPS가 필수가 아니었기 때문에 API를 호출할 때 Signature를 생성해서 호출해야 했지만, OAuth 2.0은 암호화를 HTTPS에게 맡김으로써 개발자의 수고를 덜어주었다. 또한, 다양한 인증 방식을 통해 웹, 모바일 등 다양한 시나리오에서 사용이 가능했다.


    OAuth 2.0의 흐름

    OAuth 2.0의 구성 요소

     

    1. Resource Owner

    ㆍ User, 즉 사용자를 의미한다.

    ㆍ 이미 google, facebook 등에 가입된 사용자로 Resource Server의 Resource Owner를 뜻한다.

     

    2. Resource Server

    ㆍ 자원을 호스팅 하는 서버이다.

    ㆍ google, facebook 등 OAuth 제공자를 의미한다.

     

    3. Client

    ㆍ Resource Server에서 제공하는 자원을 사용하는 애플리케이션

    ㆍ google, facebook 등이 있다.

     

    4. Authorization Server

    ㆍ 사용자 동의를 받아서 권한을 부여 및 관리하는 서버


    출처

    https://ko.wikipedia.org/wiki/OAuth

    https://earlybird.kr/1584

    https://bravenamme.github.io/2019/10/25/oauth2.0/


     

    GitHub - qlsdud0604/sneakers-mania: 👟 신발 사진을 업로드하고 소통할 수 있는 커뮤니티

    👟 신발 사진을 업로드하고 소통할 수 있는 커뮤니티. Contribute to qlsdud0604/sneakers-mania development by creating an account on GitHub.

    github.com

     

    728x90

    댓글

Designed by Tistory.