부트캠프 기록/Section4

[Spring Security] OAuth2 란

bbangduck 2022. 11. 25. 14:13

✅ 학습 목표

  • OAuth 2가 무엇인지 이해할 수 있다.
  • OAuth 2의 인증 방식에 대해 설명할 수 있다.
  • Authorization 서버와 Resource 서버의 차이에 대해 이해할 수 있다

 

 

 

OAuth 2란?

  • 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 접근 권한에 대한 토큰을 발급한 뒤 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식

 

  • OAuth 2를 사용하는 애플리케이션 유형
    • 써드 파티 애플리케이션에서 제공하는 API를 직접적으로 사용
    • 추가적인 인증 서비스를 제공하기 위한 용도

 

 

 

OAuth 2의 인증 방식

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

                     Figure 1: Abstract Protocol Flow
  +--------+                                           +---------------+
  |        |--(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        +---------------+

               Figure 2: Refreshing an Expired Access Token

 

Resource Owner

사용하고자 하는 Resource의 소유자

 

Client

Resource Owner를 대신해 보호된 Resource에 액세스하는 애플리케이션

 

Resource Server

Client의 요청을 수락하고 Resource Owner에게 해당하는 Resource를 제공하는 서버

 

Authorization Server

Client가 Resource Server에 접근할 수 있는 권한을 부여하는 서버

 

 

 

 

 

Authorization Grant에 따른 인증 처리 방식

  • Authorization Code Grant : 권한 부여 승인 코드 방식
  • Implicit Grant : 암묵적 승인 방식
  • Resource Owner Password Credential Grant : 자원 소유자 자격 증명 승인 방식
  • Client Credentials Grant : 클라이언트 자격 증명 승인 방식

 

 

 

 

 

📚 참고