0%

OAuth

OAuth

하나의 세션동안 사용자의 신원을 확인하여 인증하는 것을 말합니다. 인증 방식으로는 다음과 같은 것들이 있습니다.

  • 기본인증(ID/PW)
  • 토큰 인증
  • 전자 서명

흔히 애플리케이션에서 사용자의 신원을 확인하기 위해 ID와 PW를 이용한 기본 인증방식을 사용합니다. 일반적으로 로그인 == 사용자 인증으로 오해하고 있는데, 로그인은 사용자 인증의 한 방식일 뿐입니다. 그러나 기본 인증 방식은 보안에 매우 취약한 구조이기 때문에 다른 대안들이 떠오르고 있는데 OAuth가 그 중 하나입니다. OAuth는 위의 인증방식 중 토큰 인증 방식을 사용합니다.

대부분 서비스는 자체적으로 기본인증을 바탕으로 한 사용자 인증 방식을 개발하고 있습니다. 그렇게 되면 서비스마다 다른 인증방식을 사용하게 되는데 OAuth는 이처럼 서비스마다 제각각인 인증 방식을 표준화한 인증방식이라고 할 수 있습니다.

자신의 애플리케이션에서 사용자 인증을 하기 위해 다른 애플리케이션의 사용자인증방식을 하도록 인가하는 것이 OAuth입니다. OAuth는 사용자 인증 프로토콜이 아닌, 인가 프로토콜입니다.

OAuth 구성요소

  • Client
    • Resource를 직접 사용하는 사용자
  • Resource Owner
    • OAuth를 사용하는 사용자
    • 일반 애플리케이션 ex)”페이스북으로 로그인하기”, “네이버로 로그인하기”등 등을 갖고 있는 사이트
  • Authorization Server
    • OAuth 인증 서버
  • Resource Server
    • Rest API Server
    • 사용자 인증이 잘 되어 있는 애플리케이션 ex)네이버, 페이프북

OAuth 진행 과정

OAuth 진행 과정은 왓챠라는 웹 서비스에서 “페이스북으로 로그인”하는 방식에 대한 예시로 설명하겠습니다.

  1. 왓챠에 접속
  2. “페이스북으로 회원가입 하기”버튼 클릭
  3. 페이스북 로그인 창으로 이동
  4. 페이스북 로그인 성공
  5. “해당 사이트의 접근을 허용할 것인가?”창이 생성
  6. “허용”을 누르면 왓챠에서 로그인 목적으로 사용할 수 있는 토큰(Token)을 페이스북이 발급
  7. 발급받은 토큰을 이용하여 만료기간까지 서비스를 사용

위의 예시를 보면 토큰을 발급해줌으로써 로그인 할 수 있는 권한을 부여한 것입니다.

OAuth의 과정

  1. 사용자 인증 방식이 잘 구현된 어떤 회사(or 서비스)에 인증을 인가
  2. 인증 절차 수행
  3. 인증 되었다는 토큰을 받아 나의 애플리케이션에 여러 권한들을 부여