Проверка подлинности пользователей

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Иногда бот должен получать доступ к защищенным онлайн-ресурсам от имени пользователя, например проверка электронной почты, проверка состояния полета или размещения заказа. Пользователь должен авторизовать бота для этого от их имени, а для авторизации бота пользователь должен пройти проверку подлинности. OAuth используется для проверки подлинности пользователя и авторизации бота. См. также типы проверки подлинности.

Если вы хотите освежить свои знания об OAuth, см. следующие статьи:

Проверка подлинности пользователей в беседе

Для выполнения определенных операций от имени пользователя, включая проверку электронной почты, создание ссылки на календарь, проверку состояния рейсов или размещение заказа, боту нужно вызвать внешнюю службу, например Microsoft Graph, GitHub или корпоративные службы REST. У каждой внешней службы есть свой метод для защиты таких вызовов. Часто запросы выдаются с использованием токена пользователя, который однозначно определяет пользователя во внешней службе (иногда его называют JSON Web Token (JWT)).

Чтобы защитить вызов к внешней службе, бот должен попросить пользователя выполнить вход, чтобы он получил токен пользователя для этой службы. Многие службы поддерживают получение токенов по протоколу OAuth или OAuth 2.

Azure AI Служба Bot предоставляет специализированные карта входа и службы, которые работают с протоколом OAuth и управляют жизненным циклом маркера. Бот может использовать эти функции, чтобы получить токен пользователя.

  • В рамках настройки бота подключение OAuth регистрируется в ресурсе Azure AI Служба Bot в Azure.

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

  • В коде бота параметр подключения OAuth используется для входа пользователей и получения токена пользователя.

На следующем рисунке показаны элементы, который участвуют в процессе аутентификации.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

О службе токенов Bot Framework

Служба токенов Bot Framework отвечает за следующие задачи:

  • упрощение использования протокола OAuth с разными внешними службами;
  • безопасное хранение токенов для определенного бота, канала, диалога и пользователя;
  • получение токенов пользователей.

    Совет

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

    • Выход пользователя
    • Повторное инициирование потока входа

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

  1. Регистрирует приложение Идентификатора Microsoft Entra, поставщик удостоверений с помощью службы токенов Bot Framework через портал Azure.
  2. Настраивает для бота подключение OAuth (например, GraphConnection).

На следующем рисунке показана последовательность взаимодействия пользователя с ботом при выполнении запроса по электронной почте через службу Microsoft Graph.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. Пользователь отправляет по электронной почте запрос к боту.

  2. Действие с этим сообщением отправляется от пользователя в службу канала Bot Framework. Служба канала гарантирует, что поле userid настроено для действия, а сообщение отправлено боту.

    Примечание.

    Идентификаторы пользователя зависят от канала, включая идентификатор Facebook или номер телефона, с которого отправляются SMS.

  3. Бот отправляет запрос службе токенов Bot Framework, чтобы узнать, если ли у нее токен для UserId для подключения OAuth (GraphConnection).

  4. Так как этот пользователь впервые взаимодействует с ботом, служба токенов Bot Framework еще не имеет маркера для этого пользователя и возвращает результат NotFound боту.

    Примечание.

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

  5. Бот создает OAuthCard с именем подключения GraphConnection и обращается к пользователю, чтобы он выполнил вход с использованием этой карты.

  6. Действие передается в службу канала Bot Framework, которая создает вызов в службу токенов Bot Framework для создания допустимого URL-адреса для входа (OAuth) для этого запроса. Этот URL-адрес для входа добавляется в OAuthCard, а сама карта затем возвращается пользователю.

  7. Пользователь получает приглашение выполнить вход с помощью соответствующей кнопки OAuthCard.

  8. Когда пользователь нажимает кнопку входа, служба канала открывает веб-браузер и вызывает внешнюю службу для загрузки страницы входа.

  9. Пользователь выполняет вход на этой странице для внешней службы. Затем внешняя служба завершает обмен данными со службой токенов Bot Framework по протоколу OAuth и отправляет токен пользователя в службу токенов Bot Framework. Служба токенов Bot Framework безопасно сохраняет этот токен и отправляет действие боту с использованием этого токена.

  10. Бот получает действие с токеном и может использовать его для создания вызовов к API MS Graph.

Защита URL-адреса для входа

Настраивая упрощенную процедуру входа для пользователя с помощью службы Bot Framework, важно обеспечить защиту URL-адреса для входа. Пользователю предоставляется URL-адрес для входа, который связан с определенными идентификаторами диалога и пользователя для этого бота. Не делитесь этим URL-адресом— это приведет к возникновению неправильного входа для определенного диалога бота. Чтобы устранить атаки безопасности, использующие URL-адрес общего входа, убедитесь, что компьютер и пользователь, щелкнувший URL-адрес входа, является человеком, которому принадлежит окно беседы.

Некоторые каналы, такие как Microsoft Teams, Direct Line и WebChat, могут сделать это без замечания пользователя. Например, WebChat использует файлы cookie сеанса, чтобы убедиться, что поток входа выполнен в том же браузере, в котором ведется диалог WebChat. Другие каналы часто определяют пользователя по шестизначному коду. Это похоже на встроенную многофакторную проверку подлинности, так как служба токенов Bot Framework не будет выпускать маркер боту, если пользователь не завершит окончательную проверку подлинности, доказав, что пользователь, вошедший в систему, имеет доступ к интерфейсу чата, введя 6-значный код.

Важно!

Учитывайте эти важные вопросы, связанные с безопасностью. Дополнительные сведения см. в этой записи блога: использование WebChat с помощью Azure AI Служба Bot аутентификации.

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

Теперь, когда вы знаете о проверке подлинности пользователей, давайте рассмотрим, как применить его к боту.

См. также