[WEB] 1)OAuth2.0 목적, 역할

이지연·2024년 4월 1일
0

WEB

목록 보기
1/4
post-thumbnail

프로젝트에서 맡은 파트가 OAuth를 반영하여 다음 유튜브 영상 자료를 참고하여 학습하고 정리를 진행하려고 한다.

목적

사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임받아야 한다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요하다. 이를 위해서 고안된 기술이 바로 OAuth이다.

현재 많은 API들이 OAuth를 통해서 상호 연동을 지원하고 있다.

OAuth를 이용해서 다른 서비스에 접근할 수 있는 권한을 획득할 수 있다. 반대로 다른 서비스에게 권한을 부여할 수도 있다.

더 자세히 알아보기 전에, OAuth는 4가지 역할을 나뉘어서 정의하고 있는데, 아래에서 기반을 다져놓자.

1. 역할(Role)

OAuth는 4가지 역할을 정의하고 있다.

1) 자원 소유자(Resource Owner)

  • 리소스 소유주이자 최종 사용자
    예: 일반 사용자 - 학생, 회사원, 선생님 등

2) 리소스 서버(Resource Server)

  • 엑세스 토큰을 사용하여 보호된 리소스 요청에 응답 및 수락, API를 통해 리소스를 제공함
    예: 리소스 제공자 - Google, Facebook, Naver, Kakao 등

3) 고객(Client)

  • 리소스 소유자 및 해당 권한을 가지고 있음
    예: 응용 프로그램(서버),서드 파티 서비스(내 서비스): 제 3자 애플리케이션 - 11번가, 에어비앤비, 스푼 등

4) 인증 서버(Authorization Server)

  • 인증 담당으로 액세스 토큰을 client에게 보내줌
    예: 권한 제공자 - Google/Facebook의 인증 담당 서버

2.OAuth 2.0 프로토콜 흐름

1) 추상 프로토콜 흐름

# RFC 6749 문서
| |--(A)- 승인 요청 ->| 자원 | : 클라이언트의 리소스 엑세스 승인 요청을 나타냄
| | | 소유자 | 
| |<-(B)-- 권한 부여 ---| | : 리소스 소유자가 승인을 부여하는 승인 단계를 나타냄
| | +---------------+
| |
| | +---------------+ | |--(C)-- 승인 부여 -->| 승인 | : 인증 서버로부터 승인을 받은 클라이언트를 나타냄
| 클라이언트 | | 서버 |
| |<-(D)----- 액세스 토큰 -------| | : 인증 서버로부터 액세스 토큰을 받는 클라이언트를 나타냄
| | +---------------+
| |
| | +---------------+
| |--(E)----- 액세스 토큰 ------>| 자원 | : 수신된 엑세스 토큰을 사용하여 리소스에 엑세스하는 클라이언트를 나타냄
| | | 서버 |
| |<-(F)--- 보호된 리소스 ---| | : 엑세스 중인 리소스를 나타냄
+---------+ +---------------+
+---------+ +---------------+
  • OAuth2.0 추상 프로토콜 흐름에 사용되는 기호에는 특정한 의미가 존재함
    |, + 및 <> 기호: 프로토콜의 흐름을 나타내는 데 사용됨
  • | : 엔터티 간의 메시지 교환
  • +: 서로 다른 개체 간의 상호 작용
  • <>: 메시지 교환 방향을 나타냄
  • |---(A)---| : 엔터티 간의 (A)로 표시된 메시지 교환
  • +---(B)---+ : : 엔터티 간 (B)로 표시된 상호작용
  • <-> : 메시지 교환 방향은 실제로 화살표 방향으로 표시

2) 흐름 설명

  • (A): 클라이언트는 리소스 소유자에게 승인을 요청함
    => 승인 요청은 리소스 소유자에게 직접 이루어질 수 있음, 또는 바람직하게 승인을 통해 간접적으로 서버를 중개자로 사용함

  • (B): 클라이언트는 권한 부여를 받음
    => 리소스 소유자의 인증을 나타내는 자격 증명임 / 권한 부여 유형은 사용자가 사용하는 방법에 따라 다르기 때문에 위에 역할에서 정의된 4가지 부여 유형 중 하나를 사용하여 표현됨

  • (C): 클라이언트는 인증을 통해 엑세스 토큰을 요청함
    => 인증 서버 및 인증 부여를 제시함

  • (D): 인증 서버는 클라이언트를 인증하고 유효성을 검사함
    => 승인을 부여하고 유효한 경우 엑세스 토큰을 발급함

  • (E): 클라어인트가 리소스로부터 보호되는 리소스를 요청함
    => 서버에 엑세스 토큰을 제시하여 인증함

  • (F): 리소스 서버는 엑세스 토큰의 유효성을 검사하고 유효한 경우 요청을 처리함

참고

profile
Everyday STEP BY STEP

0개의 댓글

관련 채용 정보