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


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

ПРИМЕНИМО К: пакет SDK версии 4

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

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

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

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

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

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

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

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

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

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

Схема, иллюстрирующая связь между компонентами проверки подлинности в службе Azure AI Bot.

Сведения о службе токенов Bot Framework

Служба токенов Bot Framework отвечает за:

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

    Подсказка

    Если у бота истек срок действия токена пользователя, бот должен:

    • Выйти из системы
    • Повторите процесс входа в систему

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

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

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

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

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

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

    Замечание

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

  3. Бот отправляет запрос службе токенов Bot Framework, проверяя, есть ли у него токен для идентификатора пользователя для подключения GraphConnectionOAuth.

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

    Замечание

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

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

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

  7. Пользователю отображается сообщение о входе с просьбой нажать кнопку входа на OAuthCard.

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

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

  10. Бот получает активность с токеном и может использовать его для обращения к API Microsoft Graph.

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

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

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

Это важно

Имейте в виду эти важные аспекты безопасности. Дополнительные сведения см. в этой записи блога: использование WebChat с проверкой подлинности службы Azure AI Bot.

Дальнейшие шаги

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

См. также