오늘은 많은 서비스에서 활용되고 있는 OAuth란 무엇인가에 대해 알아보도록 하겠다.
OAuth의 이론적인 정의에 대해 먼저 알아보도록 하자.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준이다. (위키백과)
장황하게 글이 적혀있지만 OAuth의 핵심은 다른 사이트에서 등록한 정보를 통해 현재 사이트의 접근 권한을 대체하는 것이라 볼 수 있다.
우리(Client) 입장에서 OAuth가 주는 가장 큰 이점은 회원가입을 여러번 하지 않아도 된다는 점이다.
예를 들어 우리는 무엇인가 살 때, 최저가를 좋아한다.
네이버를 통해 최저가를 제공하는 사이트를 확인하고 이곳에서 사겠다고 결심한다.
최저가를 제공하는 사이트는 각 상품마다 다를 것이다. 하지만 우리는 최저가 사이트마다 회원가입을 하고 싶진 않다...
바로 이럴 때, 편의성을 제공하는 것이 OAuth이다.
위 사진은 11번가의 로그인 페이지이다. 최저가 상품이 11번가에 있다고 가정했을 때, 우리는 11번가의 회원으로 가입할 필요없이 간편 로그인 기능을 통해 손쉽게 로그인하고 물건을 살 수 있을 것이다.
- OAuth의 가장 큰 이점 (Client Side)
개인정보를 여러 사이트에 등록할 필요 없이 하나의 계정정보를 토대로 여러 사이트에서 활용할 수 있다.
그렇다면 OAuth는 어떻게 동작할까?
흐름에 대해 이야기 하기 전에 각 point 별로 설명을 덧붙여보도록 하겠다.
우리는 11번가에서 옷을 사기 위해 네이버 로그인을 시도할 시, 아래와 같이 이야기할 수 있다.
- Resource Owner: 간편로그인을 시도하는 우리 자신
- Client: 11번가
- Authorization Server: 인증(Access Token)/권한부여를 관리 서버 (in 네이버)
- Resource Server: 자원 관리 및 제공 서버 (in 네이버)
11번가에서 네이버 로그인을 연동하기 위해선 Access Token을 발급받아야 한다.
이를 위해 11번가는 네이버 사이트의 가이드에 맞춰 Client ID, Secret Key를 발급받고 redirect URL을 등록해야 한다.
- Redirect URL: Authorization Code를 넘겨줄 Client side's URL
위 처리가 완료되었다면 11번가(Client)는 네이버(Service Provider)와 OAuth를 사용할 기본 준비가 완료되었다.
5-6. 네이버(Service Provider)는 일전에 11번가(Client)에서 Redirect URL로 기입한 곳으로 Authorization Code를 전달한다.
9~11. 11번가(Client)는 Authorization Server로부터 전달받은 Access Token을 가지고 네이버(Resource Server)에 우리의 정보에 대한 정보 제공을 요청한다.
OAuth는 1.0에서 2.0으로 그 버전을 업그레이드 하였다.
이를 통해 기대할 수 있는 이점은 다음과 같다.
1. 심플함
JWT Bearer 토큰 인증방식을 통해 signature가 필요없어 간단해졌다.
2. 인증 방식의 다양성
HMAC 암호화만 사용하던 1.0과 달리 여러 인증 방식 제공을 통해 시나리오, 브라우저별로 대응 가능
3. 토큰의 유효 시간 단축을 통한 보안 강화
1.0의 경우, 액세스 토큰은 1년 이상 보관할 수 있었다. 하지만 2.0은 액세스 토큰의 시간은 단축시키고 Refresh Token을 추가하여 사용자의 편의성을 보장한다.