OAuth 2.0, Scope 개념 및 스키마 정리

개요

  • 인증된 사용자만 API에 접근하게 하려면 API 보안이 매우 중요하다. 스코프(Scope)는 클라이언트에게 허용된 리소스의 범위를 저장한다.
  • 스코프엔드포인트와 1:1 관계가 아니다. 1개의 엔드포인트가 여러 개의 스코프를 가질 수 있고 여러 개의 엔드포인트가 1개의 스코프를 가질 수도 있다. 엔드포인트를 제공하는 리소스 서버인증 서버가 제공하는 허용 스코프에 따라 정보를 가공하여 응답해야할 의무가 있다.
  • grant_typeauthorization_code, implicit 방식의 인증은 클라이언트 등록시 요청된 Scope에서 사용자가 동의한 항목만 Scope로 결정되어 최종적으로 access_token에 담겨진다.

스키마

scope.id

  • String 시스템이 생성한 고유한 랜덤 문자열 (ex: scpainazg3Ekay92V0h7)

scope.name

  • String (필수) Scope 이름 (ex: car:drive)
  • OAuth 2.0(RFC 6749)은 scope 이름을 짓는 규칙에 대해 별도로 정의하지 않았다.
  • App.net_을 사용한다. (ex: update_profile)
  • GitHub:을 사용한다. (ex: user:email) 추가적인 특징으로 인증 서버에서 access_token 검증 후에 X-OAuth-ScopesX-Accepted-OAuth-Scopes리소스 서버에 전달한다.
  • Instgram+을 사용한다. (ex: likes+comments)
  • Shopify_를 사용한다. (ex: read_customers, write_script_tags)

scope.description

  • String Scope 설명 (ex: Drive car)
  • 사용자가 클라이언에게 자신의 리소스에 접근할 권한 부여에 대한 동의 여부를 물어볼 때 출력하게 된다.

scope.system

  • String Authorization Server가 관리하는 Scope 여부 (ex: false)

scope.default

  • Boolean 클라이언트 생성시 기본 제공되는 Scope에 포함 여부 (ex: false)

참고 글

저작자 표시 비영리 동일 조건 변경 허락
신고