OAuth 구성 요소, 동작 원리

ch9eri·2022년 12월 27일
0

WEB

목록 보기
2/4

🐠 OAuth 구성 요소

client

(ex. 내 서비스)
: 자원 소유자의 보호된 자원에 접근하는 애플리케이션

resource owner

(ex. 내 서비스 사용자)
: 자원 소유자. 보호된 자원에 접근하는 권한을 제공

resource server

(ex. 카카오)
: 요청을 수신하고 권한을 검증하여 결과(자원)을 응답

🐠 동작 원리

1. 등록

client -> resource server

2. 인증

2-1. 버튼 클릭

client -> resource owner

ex) 버튼 클릭시 소셜 로그인
-> {client id, scope, redirect url} 포함 링크 연결

2-2. 로그인 상태, 요청 정보 일치 여부 확인

resource owner -> resource server

	if) 로그인 상태면
    resource owner의 client id, redirect url 일치하는지 확인
    
    else)
    로그인 하라고 돌려보냄 (resource server -> resource owner)

2-3. 동의 여부 확인

resource owner -> resource server

scope에 해당되는 권한을 client에게 부여할 것인지 확인

-> 성공 시 resource server가 해당 요청 정보 얻게 됨

2-4. authorization code 전송 및 리다이렉팅

resource server -> resource owner

authorization code 전송

resource owner -> client

authorization code를 포함한 링크로 리다이렉트

2-5. authorization code 일치 여부 확인

client -> resource server

redirect url, client id, client secret, authorization code 포함한 링크 공유

resource server가 authorization code 일치 여부 확인
-> 일치하면 다음 단계(access token 발급) 이동

3. access token 발급

resource server -> client

  • 이미 인증은 완료된 상태이므로 authorization code 삭제
  • resource sever가 access token 발급 후 client에 전달

4. api 호출

5. refresh token을 이용하여 access token 재발급

+--------+                                           +---------------+
  |        |--(A)------- Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<-(B)----------- Access Token -------------|               |
  |        |               & Refresh Token             |               |
  |        |                                           |               |
  |        |                            +----------+   |               |
  |        |--(C)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(D)- Protected Resource --| Resource |   | Authorization |
  | Client |                            |  Server  |   |     Server    |
  |        |--(E)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(F)- Invalid Token Error -|          |   |               |
  |        |                            +----------+   |               |
  |        |                                           |               |
  |        |--(G)----------- Refresh Token ----------->|               |
  |        |                                           |               |
  |        |<-(H)----------- Access Token -------------|               |
  +--------+           & Optional Refresh Token        +---------------+

reference
https://opentutorials.org/module/3668
https://www.rfc-editor.org/rfc/rfc6749#section-1.5

profile
잘하자!

0개의 댓글