數據 API 產生器中的本機驗證
使用數據 API 產生器在本機開發解決方案,或在內部部署執行資料 API 產生器時,您需要模擬具有特定角色或宣告的要求來測試已設定的驗證和授權選項。
若要模擬已驗證的要求,而不設定驗證提供者 (,例如 Microsoft Entra ID,例如) ,您可以使用 Simulator
或 StaticWebApps
驗證提供者:
Simulator
使用提供者
Simulator
是可設定的驗證提供者,可指示數據 API 產生器引擎將所有要求視為已驗證。
- 至少會在系統角色
Authenticated
的內容中評估所有要求。 - 如有需要,則會在 Http 標頭中表示的任何角色內容中
X-MS-API-ROLE
評估要求。
注意
雖然會接受所需的角色,但定義資料庫原則的授權許可權將無法運作,因為無法為已驗證的使用者設定自定義宣告與 Simulator
提供者。 繼續進行使用提供者測試資料庫授權原則一節StaticWebApps
。
1.更新運行時間組態驗證提供者
請確定您已在使用驗證提供者和development
模式的Simulator
組態檔中指定 。 請參閱此範例 host
組態一節:
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
2.指定要求的角色內容
使用 Simulator
作為數據 API 產生器的驗證提供者,不需要自定義標頭,才能將角色內容設定為系統角色 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
提供者會指示數據 API 產生器只在 Static Web Apps 環境中執行時,才尋找一組 HTTP 標頭。 用戶端會在本機執行時設定這些 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 應用程式的 已驗證使用者元數據 具有下列屬性:
屬性 | Description |
---|---|
identityProvider | 任何字串值。 |
userId | 使用者的唯一識別碼。 |
userDetails | 使用者的使用者名稱或電子郵件地址。 |
userRoles | 使用者獲派角色的陣列。 |
注意
如 Static Web Apps 檔中所述,X-MS-CLIENT-PRINCIPAL
標頭不包含claims
數位。
若要與標頭一起 X-MS-CLIENT-PRINCIPAL
傳遞,JSON 承載必須是Base64編碼。 您可以使用任何線上或離線工具來執行此動作。 其中一個這類工具是 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'