Grant Type이란?

OAuth 2.0 인가 맥락

OAuth 2.0 인가 프레임워크 내에서 "Grant Type"이라는 용어는 애플리케이션이 액세스 토큰을 획득하는 방법을 의미합니다. 본질적으로 Grant Type은 애플리케이션이 사용자 데이터에 접근하기 위해 사용할 인가 흐름의 종류를 지정합니다.

OAuth 2.0의 다양한 Grant Type

OAuth 2.0은 서로 다른 애플리케이션 시나리오에 맞춰 여러 Grant Type을 정의합니다:

LoadFocus를 사용한 OAuth 2.0

  1. Authorization Code:
  • 적합한 경우: 클라이언트 시크릿을 안전하게 유지할 수 있는 애플리케이션, 주로 서버 측 애플리케이션.
  • 흐름: 사용자가 먼저 인증 서버로 리다이렉트됩니다. 인증 성공 후 인가 코드와 함께 애플리케이션으로 다시 리다이렉트됩니다. 애플리케이션은 이 코드를 액세스 토큰으로 교환합니다.
  1. Implicit:
  • 적합한 경우: 사용자 에이전트 중심 애플리케이션, 예를 들어 싱글 페이지 앱.
  • 흐름: Authorization Code 흐름과 유사하지만, 중간 코드 없이 액세스 토큰이 직접 전달됩니다. Authorization Code 방식보다 덜 안전한 것으로 간주됩니다.
  1. Password (Resource Owner Password Credentials):
  • 적합한 경우: 매우 신뢰할 수 있는 애플리케이션, 주로 리소스 서버와 같은 조직이 소유한 경우.
  • 흐름: 사용자가 애플리케이션에 직접 사용자 이름과 비밀번호를 입력합니다. 애플리케이션은 이 자격 증명을 사용하여 액세스 토큰을 가져옵니다. 이 흐름은 클라이언트가 매우 신뢰할 수 있는 경우가 아니면 일반적으로 권장되지 않습니다.
  1. Client Credentials:
  • 적합한 경우: 사용자의 리소스가 아닌 자체 리소스에 접근해야 하는 서비스 또는 애플리케이션.
  • 흐름: 애플리케이션이 자체 자격 증명(클라이언트 ID와 시크릿 등)을 사용하여 인증하고 액세스 토큰을 받습니다.
  1. Device Code (포괄적인 브라우저 기능이 없는 기기용):
  • 적합한 경우: 스마트 TV, 게임 콘솔 또는 프린터와 같은 기기.
  • 흐름: 기기가 인가 서버와 통신하여 기기 코드와 사용자 코드를 얻습니다. 사용자가 다른 기기(예: 스마트폰)에서 사용자 코드를 입력합니다. 확인 후 기기가 액세스 토큰을 받습니다.
  1. Refresh Token:
  • 용도: 독립적인 흐름이 아니라 다른 Grant Type을 보완합니다. 액세스 토큰이 만료되면, 리프레시 토큰을 통해 사용자가 다시 로그인하지 않고도 애플리케이션이 새 토큰을 얻을 수 있습니다.

Grant Type이 중요한 이유

Grant Type은 다양한 애플리케이션 맥락에 유연성을 제공합니다. 각각은 애플리케이션의 제약 조건을 고려하여 액세스 토큰 획득이 가능한 한 안전하도록 보장합니다. Grant Type의 선택은 클라이언트, 사용자 및 인가 서버 간의 상호작용에 영향을 미치므로, 올바른 선택은 사용성과 보안 모두에 중요합니다.