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


Добавление проверки подлинности при вызовах пользовательских API из Azure Logic Apps

Чтобы повысить безопасность вызовов API, можно настроить проверку подлинности Microsoft Entra с помощью портал Azure, чтобы вам не нужно обновлять код. Вы можете также применить обязательную проверку подлинности с помощью кода API.

Проверку подлинности можно добавить следующими способами:

Проверка подлинности вызовов к API без изменения кода

Вот основные действия для применения этого метода:

  1. Создайте два удостоверения приложений Microsoft Entra: один для ресурса приложения логики и один для веб-приложения (или приложения API).

  2. Для проверки подлинности вызовов API используйте учетные данные (идентификатор клиента и секрет) для субъекта-службы, связанного с удостоверением приложения Microsoft Entra для приложения логики.

  3. Добавьте идентификаторы приложений в определение рабочего процесса приложения логики.

Часть 1. Создание удостоверения приложения Microsoft Entra для приложения логики

Ресурс приложения логики использует это удостоверение приложения Microsoft Entra для проверки подлинности в идентификаторе Microsoft Entra. Для вашего каталога это удостоверение необходимо настроить только один раз. Например, вы можете использовать одно удостоверение для всех приложений логики или создать отдельные удостоверения для каждого из них. Вы можете настроить эти удостоверения на портале Azure или с помощью PowerShell.

  1. В портал Azure выберите идентификатор Microsoft Entra.

  2. Убедитесь, что вы открыли каталог своего веб-приложения или приложения API.

    Совет

    Для перехода между каталогами щелкните свой профиль и выберите другой каталог. Или выберите Обзор>Переключение каталога.

  3. В меню каталога в разделе Управление выберите Регистрация приложений > Новая регистрация.

    В списке Все регистрации отображаются записи о регистрации всех приложений в каталоге. Чтобы просмотреть только регистрации приложений, выберите Собственные приложения.

    Снимок экрана: портал Azure с выбранным экземпляром Microsoft Entra, областью

  4. Укажите имя для идентификатора приложения логики, понятное для пользователя. Выберите поддерживаемые типы учетных записей. В разделе URI перенаправления выберите Интернет, укажите уникальный URL-адрес, на который будет возвращаться ответ после проверки подлинности, и нажмите кнопку Зарегистрировать.

    Снимок экрана: область

    В списке Собственные приложения теперь отображается созданный вами идентификатор приложения. Если идентификатор не отображается, на панели инструментов нажмите кнопку Обновить.

    Снимок экрана: идентификатор приложения логики.

  5. В списке регистрации приложений выберите новый идентификатор приложения.

  6. В меню навигации по идентификаторам приложений выберите Обзор.

  7. В области Обзор в разделе Основные сведения скопируйте и сохраните идентификатор приложения, чтобы использовать его в качестве "идентификатора клиента" для приложения логики в части 3.

    Снимок экрана с подчеркнутым идентификатором приложения (клиента).

  8. В меню навигации по удостоверениям приложения выберите сертификаты и секреты.

  9. На вкладке Секреты клиента выберите Новый секрет клиента.

  10. В поле Описание введите имя для секрета. Выберите срок действия секрета в соответствующем поле. Закончив, нажмите кнопку Добавить.

    Секрет, который вы создаете, выступает в качестве "секрета" или пароля для идентификатора приложения логики.

    Снимок экрана: создание секрета для идентификатора приложения.

    На панели "Сертификаты и секреты" в разделе секретов клиента теперь появится секрет вместе со значением секрета и идентификатором секрета.

    Снимок экрана: значение и идентификатор секрета с выделенной кнопкой для копирования значения секрета.

  11. Скопируйте значение секрета для последующего использования. При настройке приложения логики в части 3 потребуется указать это значение в качестве "секрета" или пароля.

Часть 2. Создание удостоверения приложения Microsoft Entra для веб-приложения или приложения API

Если веб-приложение или приложение API уже развернуты, можно включить проверку подлинности и создать удостоверение приложения на портале Azure. В противном случае вы можете включить проверку подлинности при развертывании с использованием шаблона Azure Resource Manager.

Создание идентификатора приложения для развернутого веб-приложения или приложения API на портале Azure

  1. На портале Azure найдите и выберите веб-приложение или приложение API.

  2. В разделе Параметры выберите Проверка подлинности>Добавить поставщик удостоверений.

  3. После открытия панели "Добавление поставщика удостоверений" на вкладке "Основные сведения" в списке поставщиков удостоверений выберите Корпорацию Майкрософт для использования удостоверений Microsoft Entra и нажмите кнопку "Добавить".

  4. Теперь создайте идентификатор приложения для веб-приложения или приложения API, как показано ниже.

    1. В поле Тип регистрации приложения выберите Создание регистрации приложения.

    2. В поле Имя укажите имя идентификатора приложения.

    3. В разделе Поддерживаемые типы учетных записейвыберите типы учетных записей, соответствующие вашему сценарию.

    4. В поле Ограничение доступа выберите Требовать проверку подлинности.

    5. В разделе Запросы, не прошедшие проверку подлинности выберите вариант в зависимости от вашего сценария.

    6. Закончив, нажмите кнопку Добавить.

    Идентификатор приложения, созданный для веб-приложения или приложения API, теперь отображается в разделе Поставщик удостоверений:

    Снимок экрана: только что созданный идентификатор приложения для веб-приложения или приложения API.

    Совет

    Если идентификатор приложения не отображается, на панели инструментов нажмите кнопку Обновить.

Теперь необходимо найти идентификаторы приложения (клиента) и арендатора для идентификатора приложения, созданного для веб-приложения или приложения API. Используйте эти идентификаторы в части 3. На портале Azure выполните следующие шаги.

Поиск идентификаторов клиента и арендатора удостоверения для веб-приложения или приложения API на портале Azure

  1. В меню навигации веб-приложения выберите Проверка подлинности.

  2. В разделе Поставщик удостоверений найдите созданный ранее идентификатор приложения. Выберите имя идентификатора приложения.

    Снимок экрана: только что созданный идентификатор приложения, область

  3. Когда откроется область Обзор для идентификатора приложения, найдите значения Идентификатор приложения (клиента) и Идентификатор каталога (арендатора). Скопируйте и сохраните значения для использования в части 3.

    Снимок экрана: область

    При необходимости вы также можете использовать этот идентификатор GUID арендатора в шаблоне развертывания веб-приложения или приложения API. Этот GUID — идентификатор определенного арендатора (ИД арендатора), который должен отображаться в следующем URL-адресе: https://sts.windows.net/{GUID}

Настройка проверки подлинности при развертывании с помощью шаблона Azure Resource Manager

Если вы используете шаблон Azure Resource Manager (шаблон ARM), вам по-прежнему нужно создать удостоверение приложения Microsoft Entra для веб-приложения или приложения API, которое отличается от удостоверения приложения для приложения логики. Чтобы создать идентификатор приложения, а затем найти идентификатор клиента и идентификатор арендатора, выполните действия, описанные выше в части 2, на портале Azure. И в шаблоне развертывания приложения, и в части 3 вы будете использовать как идентификатор клиента, так и идентификатор арендатора.

Внимание

При создании удостоверения приложения Microsoft Entra для веб-приложения или приложения API необходимо использовать портал Azure, а не PowerShell. Командлет PowerShell не поддерживает настройку необходимых разрешений для входа пользователей на веб-сайт.

Получив идентификаторы клиента и арендатора, добавьте их в шаблон развертывания в качестве подресурса веб-приложения или приложения API.

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Чтобы автоматически развернуть пустое веб-приложение и приложение логики вместе с проверкой подлинности Microsoft Entra, просмотрите полный шаблон или нажмите следующую кнопку "Развернуть в Azure ".

Развернуть в Azure

Часть 3. Заполнение раздела авторизации в приложении логики

В предыдущем шаблоне этот раздел авторизации уже настроен. Но если вы разрабатываете определение приложения логики полностью самостоятельно, вам потребуется включить весь раздел авторизации.

  1. Откройте определение приложения логики в представлении кода.

  2. Перейдите к определению действия HTTP, найдите раздел Авторизация и включите в него следующие свойства:

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
Свойство Обязательное поле Описание:
tenant Да GUID для клиента Microsoft Entra
audience Да GUID целевого ресурса, к которому требуется доступ, являющийся идентификатором клиента из удостоверения приложения для веб-приложения или приложения API.
clientId Да GUID клиента, запрашивающего доступ, являющийся идентификатором клиента из удостоверения приложения логики.
secret Да Секрет или пароль из идентификатора приложения для клиента, который запрашивает маркер доступа
type Да Тип проверки подлинности. Для аутентификации ActiveDirectoryOAuth это значение равно ActiveDirectoryOAuth.

Например:

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

Безопасные вызовы API с помощью кода

Проверка подлинности на основе сертификата

Вы можете использовать сертификаты клиента для проверки входящих запросов из рабочего процесса приложения логики к веб-приложению или приложению API. Чтобы узнать, как настроить код, см. статью о настройке взаимной проверки подлинности TLS.

В разделе Авторизация добавьте следующие свойства:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Свойство Обязательное поле Описание:
type Да Тип проверки подлинности. Для TLS/SSL-сертификатов клиента используйте значение ClientCertificate.
password No Пароль для доступа к сертификату клиента (PFX-файл).
pfx Да Содержимое сертификата клиента в кодировке Base64 (PFX-файл).

Обычная проверка подлинности

Для проверки входящих запросов из приложения логики к веб-приложениям или приложениям API можно использовать обычную проверку подлинности: имя пользователя и пароль. Обычная проверка подлинности — это универсальный вариант, который подходит для веб-приложений и приложений API, написанных на любых языках программирования.

В разделе Авторизация добавьте следующие свойства:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Свойство Обязательное поле Описание:
type Да Тип аутентификации, который будет использоваться. Для обычной проверки подлинности используйте значение Basic.
username Да Имя пользователя, которое будет использоваться для аутентификации.
password Да Пароль, который будет использоваться для аутентификации.

Проверка подлинности Microsoft Entra с помощью кода

По умолчанию проверка подлинности Microsoft Entra, включенная в портал Azure, не обеспечивает точное авторизацию. Например, при такой проверке подлинности API блокируется только для конкретного арендатора, а не для определенного пользователя или приложения.

Чтобы ограничить доступ через API к приложению логики с помощью кода, извлеките заголовок, который содержит маркер JSON Web Token (JWT). Проверяйте удостоверение вызывающей стороны и отклоняйте запросы, не отвечающие требованиям.

Следующие шаги