OAuth

이재용·2025년 1월 1일
0

개요

사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 한다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요하다. 이를 위해서 고안된 기술이 OAuth이다. 오늘날 많은 API들이 OAuth를 통해서 상호 연동을 지원하고 있다.

역할

Resource Owner = 사용자
Resource Server = 리소스 제공자 (ex 구글, 네이버, 카카오)
Client = 서드 파티 서비스 (내 서비스)

액세스 토큰을 발급받기 위한 여정

순서

  1. Authorization Code 받기
  2. Access Token 받기

리소스 서버 등록에 필요한 것

Client ID
Client Secret
Authorized Redirect URI

Redirect URI
서드 파티 서비스 페이지에서 로그인을 요청하게 되면 Resource Server의 로그인 페이지로 이동한다. 사용자가 로그인에 성공하면 다시 서드 파티 페이지로 돌아가야 하는데 그 돌아갈 페이지의 주소가 Redirect URI 이다.

Resource Owner의 승인(=로그인)

로그인 요청 URI 예시
https://accounts.google.com/o/oauth2/v2/auth
?response_type=code
&redirect_uri=http://~~~
&scope=https://www.googleapis.com/auth/plus.login
&client_id=

Resource Server는 사용자가 어떤 스코프를 허용했다는 정보를 알게된다.

Resource Server의 승인

Authorization Code 발급

Access Token 요청

Access Token 발급

Resource Server는 Client가 등록된 Client가 맞는지 확인하기 위해서 Resource Owner을 통해서 Client에게 Authorization code를 전달합니다. 이 값을 받은 Client는 이 값과 Client secret의 값을 Resource Server로 전송해서 Client의 신원을 Resource Owner에게 증명합니다.

API 사용 예제

GET /dirve/v2/files
Authorization: Bearer {ACCESS_TOKEN}
Host: www.googleapis.com/

Refresh Token 발급 예제

POST /oauth2/v4/token
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=<your_client_id>
&client_secret=<your_client_secret>
&refresh_token=<refresh_token>
&grant_type=refresh_token

0개의 댓글