Поделиться через


Локальная проверка подлинности в построителе API данных

При разработке решения с помощью построителя API данных локально или при локальном запуске построителя API данных необходимо протестировать настроенные параметры проверки подлинности и авторизации, сымитировав запрос с определенной ролью или утверждением.

Для имитации запроса, прошедшего проверку подлинности, без настройки поставщика проверки подлинности (например, 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. Укажите контекст роли запроса.

В 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 данных искать набор http-заголовков, которые присутствуют только при выполнении в среде Статические веб-приложения. Клиент задает эти http-заголовки при локальном запуске для имитации пользователя, прошедшего проверку подлинности, включая членство в роли или пользовательские утверждения.

Примечание

Предоставленные клиентом экземпляры заголовка HTTP будут работать только при локальной разработке, X-MS-CLIENT-PRINCIPALтак как рабочие среды Статические веб-приложения Azure удаляют все предоставленные клиентом экземпляры этого заголовка.

Убедитесь, что в файле конфигурации используется поставщик проверки подлинности 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"]
}

Метаданные пользователя статического веб-приложения, прошедшие проверку подлинности , имеют следующие свойства:

Свойство Описание
identityProvider Любое строковое значение.
userId Уникальный идентификатор пользователя.
userDetails Имя или адрес электронной почты пользователя.
userRoles Массив назначенных пользователю ролей.

Примечание

Как указано в документации Статические веб-приложения, X-MS-CLIENT-PRINCIPAL заголовок не содержит claims массив.

Чтобы передать с заголовком X-MS-CLIENT-PRINCIPAL , полезные данные JSON должны быть в кодировке Base64. Для этого можно использовать любой сетевой или автономный инструмент. Одним из таких средств является DevToys. Пример полезных данных в кодировке Base64, представляющий json, на который ссылался ранее:

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'