Access Control
Access Control액세스 제어

액세스 제어

Included in the “Power Extensions” bundle

사용자의 로그인 상태, 역할, 권한 등을 기반으로 스키마에 대한 세분화된 액세스를 부여합니다.

설명

이 확장 기능을 사용하면 액세스 제어 목록을 생성하여 GraphQL 스키마의 다양한 요소(오퍼레이션, 필드, 디렉티브)에 액세스할 수 있는 사용자를 관리할 수 있습니다.

새로운 "액세스 제어 목록" Custom Post Type이 사이트에 추가됩니다. 메뉴의 "액세스 제어 목록" 페이지에서 항목을 탐색하고, "새 액세스 제어 목록 추가"를 클릭하여 편집기에 새 항목을 추가할 수 있습니다.

액세스 제어 목록
액세스 제어 목록
액세스 제어 목록 편집기
액세스 제어 목록 편집기

편집기에서는 오퍼레이션(query 또는 mutation), 필드, 글로벌 필드, 디렉티브 중에서 어떤 스키마 요소에 액세스하기 위해 충족해야 하는 규칙을 지정합니다.

액세스 제어 목록 만들기

스키마 구성을 통해 액세스 제어 목록을 원하는 엔드포인트(프라이빗 엔드포인트, 단일 엔드포인트, 커스텀 엔드포인트 또는 persisted queries)에 할당합니다.

스키마 구성에서 액세스 제어 목록 선택하기
스키마 구성에서 액세스 제어 목록 선택하기

GraphQL 쿼리를 실행할 때, 액세스 제어 목록에서 선택된 스키마 요소가 포함되어 있으면 선택된 규칙이 평가됩니다.

규칙 중 하나라도 충족되지 않으면 해당 오퍼레이션, 필드 또는 디렉티브에 대한 액세스가 거부되며, API가 응답을 제공하는 방식을 구성할 수 있습니다:

  • 퍼블릭 모드: 액세스가 거부된 이유를 사용자에게 오류 메시지로 알립니다
  • 프라이빗 모드: 오류 메시지에 오퍼레이션, 필드 또는 디렉티브가 존재하지 않음을 나타냅니다

예를 들어, 퍼블릭 모드 에서는 다음과 같은 응답이 반환될 수 있습니다:

{
  "errors": [
    {
      "message": "You must have role 'author' to access field 'title' for type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

프라이빗 모드 에서는 다음과 같은 응답이 반환될 수 있습니다:

{
  "errors": [
    {
      "message": "There is no field 'title' on type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

액세스 제어 규칙 목록

이 확장 기능은 다음과 같은 액세스 제어 규칙을 제공합니다:

  • 액세스 비활성화
  • 사용자가 로그인 또는 로그아웃 상태인 경우에만 액세스 허용
  • 사용자가 특정 역할을 가진 경우에만 액세스 허용
  • 사용자가 특정 권한을 가진 경우에만 액세스 허용