データ 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'