次の方法で共有


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

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

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

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

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

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

注意

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

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

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

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

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

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

注意

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

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

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

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

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

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

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

プロパティ 説明
identityProvider 任意の文字列値。
userId ユーザーの一意の ID。
userDetails ユーザーのユーザー名またはメール アドレス。
userRoles ユーザーに割り当てられたロールの配列。

注意

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

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

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

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

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