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
        }
      ]
    }
  ]
}

アクセス制御ルールの一覧

この拡張機能は以下のアクセス制御ルールを提供します:

  • アクセスを無効にする
  • ユーザーがログイン中またはログアウト中の場合のみアクセスを許可する
  • ユーザーが特定のロールを持つ場合のみアクセスを許可する
  • ユーザーが特定のケイパビリティを持つ場合のみアクセスを許可する