OAuth 2.0에 대해 정리해보겠습니다.
1. OAuth 2.0
(1) OAuth 2.0 이란?
OAuth 2.0은 기본적으로 '권환을 위임받기 위한 프로토콜' 입니다. 이를 보다 자세히 이해하기 위해서는 3가지 주체가 필요합니다.
A라는 서비스에서 B라는 서비스에 저장된 사용자의 자원이 필요하다고 가정해봅시다.
(대표적으로 소셜 로그인이 그 예 입니다.)
(1) Resource Owner
서비스를 이용하는 사용자입니다.
(2) Resource Server
위 가정에서 B 서비스가 resource server에 해당됩니다.
(3) Client Server
위 예시에서 A 서비스가 client server가 됩니다.
이를 바탕으로 OAuth 2.0을 좀 더 자세히 설명하면,
OAuth 2.0은 client server가 resource server에 resource owner의 권한으로 접근할 수 있는 자격을 얻기 위한 프로토콜입니다.
(2) OAuth 2.0 동작 방식
OAuth 2.0을 통해 권환을 위임받는 과정은 다음과 같습니다.

① 가장 먼저 client server와 resource server가 OAuth 2.0을 이용할 수 있도록 일종의 계약을 해둡니다.
② 사용자(이하 C)가 A에서 B의 자원이 필요한 기능을 이용할 때, B로 인증 요청을 보냅니다. 이때, 자신이 A 서비스에 위임하기 위해 인증한다는 정보를 포함합니다. 그렇지 않으면 어떤 서비스에 권한을 줄 것인지 확인할 수 없겠죠.
(사용자는 client server가 아니라, 서비스의 사용자를 의미합니다.)
③ 사용자가 인증을 마치면 B는 2가지 처리를 합니다.
- A와의 계약에 C가 사용한다는 것을 저장
- C에게 access code 발급 및 저장
(access token과는 다른 것으로, 정보를 담지 않습니다.)
④ C는 발급받은 access code를 보유한 채 A에게 redirect 합니다.
(①의 과정에서 redirect url 명시해주는 과정 등이 포함됩니다.)
⑤ 이제 B는 A에게 access code를 제출합니다.
이를 의미 상으로 살펴보면,
A의 입장에서는, B한테 이렇게 말하는 느낌입니다. 'C가 너한테 이거 보여주면 된다더라'
B의 입장에서는, 'C가 위임한다고 했던 정보와 일치하는 키를 가지고 왔는지 검사해야지' 가 됩니다.
⑥ 최종적으로 B에서 'C가 A에게 권환을 위임하기로 했다는 것'이 확인되고, A에게 'C의 자격으로 B에 접근할 수 있는 권한'을 access token의 형태로 발급합니다.
'개발' 카테고리의 다른 글
[CI/CD] (2) CD 흐름 파악하기(AWS Code Deploy) (0) | 2023.05.04 |
---|---|
[CI/CD] (1) Github actions로 CI 구축하기 (1) | 2023.04.20 |
[Git] 하나의 저장소에 여러 프로젝트 추가하기(subtree) (0) | 2023.04.12 |
[REST API] 리스트를 JSON으로 반환할 때 주의할 점 (0) | 2023.04.10 |
[Web] JWT (0) | 2023.03.28 |