次の方法で共有


データ API ビルダーでのローカル認証

データ API ビルダーを使用してソリューションをローカルで開発する場合、またはオンプレミスで Data API Builder を実行する場合は、特定のロールまたは要求で要求をシミュレートして、構成された認証と承認のオプションをテストする必要があります。

認証プロバイダー (Microsoft Entra ID など) を構成せずに認証済み要求をシミュレートするには、 Simulator または StaticWebApps 認証プロバイダーを利用できます。

Simulator プロバイダーを使用する

Simulator は構成可能な認証プロバイダーであり、すべての要求を認証済みとして扱うようにデータ API ビルダー エンジンに指示します。

  • 少なくとも、すべての要求はシステム ロール Authenticatedのコンテキストで評価されます。
  • 必要に応じて、要求は、 X-MS-API-ROLE Http ヘッダーに示されている任意のロールのコンテキストで評価されます。

目的のロールが受け入れられますが、 Simulator プロバイダーで認証されたユーザーに対してカスタム要求を設定できないため、データベース ポリシーを定義する承認アクセス許可は機能しません。 「データベース承認ポリシー をテストするには、 StaticWebApps プロバイダーを使用 する」セクションに進みます。

1. ランタイム構成認証プロバイダーを更新する

構成ファイルで、 Simulator 認証プロバイダーと development モードを使用していることを確認します。 このサンプルの host 構成セクションを参照してください。

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. 要求のロール コンテキストを指定する

データ API ビルダーの認証プロバイダーとして Simulator を使用する場合、ロール コンテキストをシステム ロール Authenticatedに設定するためにカスタム ヘッダーは必要ありません。

curl --request GET \
  --url http://localhost:5000/api/books \

システム ロール Anonymousなど、ロール コンテキストを他のロールに設定するには、 X-MS-API-ROLE ヘッダーを目的のロールに含める必要があります。

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

StaticWebApps プロバイダーを使用する

StaticWebApps認証プロバイダーは、静的 Web Apps 環境内で実行されている場合にのみ存在する一連の HTTP ヘッダーを検索するように Data API ビルダーに指示します。 クライアントは、ロール メンバーシップやカスタム要求など、認証されたユーザーをシミュレートするためにローカルで実行するときに、これらの HTTP ヘッダーを設定します。

クライアントが提供する Http ヘッダーのインスタンス ( X-MS-CLIENT-PRINCIPAL) は、運用環境の Azure Static Web Apps 環境では、そのヘッダー のすべてのクライアント提供インスタンスが削除 されるため、ローカルで開発する場合にのみ機能します。

構成ファイルで、 StaticWebApps 認証プロバイダーを使用していることを確認します。 このサンプルの host 構成セクションを参照してください。

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. 生成された X-MS-CLIENT-PRINCIPAL ヘッダーを提供する要求を送信する

データ API ビルダーがローカルで実行され、 StaticWebApps 認証プロバイダーを使用するように構成されたら、次のテンプレートを使用してクライアント プリンシパル オブジェクトを手動で生成できます。

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

静的 Web アプリの 認証済みユーザー メタデータ には、次のプロパティがあります。

プロパティ 説明
アイデンティティプロバイダ 任意の文字列値。
ユーザーID ユーザーの一意識別子。
user詳細 ユーザーのユーザー名またはメール アドレス。
ユーザー役割 ユーザーの割り当てられたロールの配列。

Static Web Apps のドキュメントで説明したように、X-MS-CLIENT-PRINCIPAL ヘッダーにはclaims配列は含まれません。

X-MS-CLIENT-PRINCIPAL ヘッダーで渡すには、JSON ペイロードを Base64 でエンコードする必要があります。 これを行うには、オンラインまたはオフラインのツールを使用できます。 そのようなツールの 1 つが DevToys です。 以前に参照された JSON を表す Base64 でエンコードされたサンプル ペイロード:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

次の cURL 要求は、author ロールのコンテキストで使用可能なBook エンティティ レコードの一覧を取得する認証済みユーザーをシミュレートします。

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'