Включение проверки подлинности с помощью стороннего поставщика OAuth

Вы можете включить проверку подлинности в приложении вкладки с помощью сторонних поставщиков удостоверений OAuth (IdP). В этом методе удостоверение пользователя приложения проверяется и предоставляется доступ поставщиком удостоверений OAuth, например идентификатором Microsoft Entra, Google, Facebook, GitHub или любым другим поставщиком. Необходимо настроить отношение доверия с поставщиком удостоверения, а пользователи вашего приложения также должны быть зарегистрированы в нем.

Примечание.

Чтобы проверка подлинности работала для вкладки на мобильных клиентах, необходимо убедиться, что используется по крайней мере версия 1.4.1 библиотеки JavaScript Microsoft Teams.
TeamsJS запускает отдельное окно для потока проверки подлинности. Установите для атрибута SameSite значение Lax Клиент Teams для настольных компьютеров или более ранние версии Chrome или Safari не поддерживаютSameSite= Нет

Примечание.

В этом разделе представлена версия 2.0.x клиентской библиотеки JavaScript (TeamsJS) Microsoft Teams. Если вы используете более раннюю версию, ознакомьтесь с обзором библиотеки TeamsJS , чтобы узнать о различиях между последней версией TeamsJS и более ранними версиями.

Использование поставщика удостоверений OAuth для включения проверки подлинности

OAuth 2.0 — это открытый стандарт проверки подлинности и авторизации, используемый Microsoft Entra id и многими другими поставщиками удостоверений. Базовое понимание OAuth 2.0 является необходимым условием для работы с проверкой подлинности в Teams. Дополнительные сведения см. в разделе Упрощенная версия OAuth 2, которой легче следовать, чем формальной спецификации. Процесс проверки подлинности для вкладок и ботов отличается, поскольку вкладки похожи на веб-сайты, поэтому они могут напрямую использовать OAuth 2.0. Боты делают некоторые вещи иначе, но основные концепции идентичны.

Например, поток проверки подлинности для вкладок и ботов, использующий Node и неявный тип предоставления OAuth 2.0, см. в разделе инициация потока проверки подлинности для вкладок.

В этом разделе используется идентификатор Microsoft Entra в качестве примера стороннего поставщика OAuth для включения проверки подлинности в приложении вкладки.

Примечание.

Перед отображением кнопки Входа для пользователя и вызовом authentication.authenticate API в ответ на нажатие кнопки необходимо дождаться завершения инициализации TeamsJS. Можно создать цепочку обработчика .then() или await выполнить функцию app.initialize() .

На схеме показан поток последовательности проверки подлинности табуляции.

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

  2. Вкладка создает URL-адрес своей начальной страницы проверки подлинности. При необходимости он использует сведения из заполнителей URL-адресов или вызывает app.getContext() метод TeamsJS, чтобы упростить проверку подлинности для пользователя. Например, при проверке подлинности с помощью идентификатора Microsoft Entra, если login_hint для параметра задан адрес электронной почты пользователя, пользователю не нужно выполнять вход, если он сделал это недавно. Это связано с тем, что Microsoft Entra идентификатор использует кэшированные учетные данные пользователя. Всплывающее окно появляется на короткое время, а затем исчезает.

  3. Затем вкладка authentication.authenticate() вызывает метод .

  4. Teams открывает начальную страницу в iframe во всплывающем окне. Начальная страница создает случайные state данные, сохраняет их для будущей проверки и перенаправляется в конечную точку поставщика /authorize удостоверений, например https://login.microsoftonline.com/<tenant ID>/oauth2/authorize для Microsoft Entra идентификатора. Замените <tenant id> своим собственным идентификатором арендатора, который называется context.tid. Как и в случае с другими потоками проверки подлинности приложений в Teams, начальная страница должна находиться в домене, который находится в ее списке validDomains, и в том же домене, что и страница перенаправления после входа.

    Примечание.

    Поток неявного предоставления разрешений OAuth 2.0 вызывает state параметр в запросе на проверку подлинности, который содержит уникальные данные сеанса для предотвращения атаки на подделку межсайтовых запросов. В примерах используется случайно созданный GUID для state данных.

  5. На сайте провайдера пользователь входит в систему и предоставляет доступ к вкладке.

  6. Поставщик направляет пользователя на страницу перенаправления OAuth 2.0 на вкладке с токеном доступа.

  7. Вкладка проверяет, соответствует ли возвращенное state значение тому, что было сохранено ранее, и вызывает authentication.notifySuccess()метод , который, в свою очередь, вызывает обработчик успеха (.then()) для метода на основе authenticate() обещаний из шага 3.

  8. Teams закрывает всплывающее окно.

  9. На вкладке отображается пользовательский интерфейс конфигурации, обновляется или перезагружается содержимое вкладок, в зависимости от того, откуда пользователь начал.

Примечание.

Если приложение поддерживает единый вход SAML, то токен JWT, сгенерированный единым входом на вкладке, нельзя использовать, поскольку он не поддерживается.

Рассматривайте контекст вкладки как подсказки

Хотя контекст вкладки предоставляет полезную информацию о пользователе, не используйте эту информацию для проверки подлинности пользователя. Выполните проверку подлинности пользователя, даже если вы получаете информацию в качестве параметров URL-адреса для URL-адреса содержимого вкладки или путем вызова app.getContext() функции в клиентской библиотеке JavaScript Microsoft Teams (TeamsJS). Злоумышленник может вызвать URL содержимого вашей вкладки со своими параметрами. Субъект также может вызывать веб-страницу, выдающую себя за Microsoft Teams, для загрузки URL-адреса содержимого вкладки в iframe и возврата собственных данных в функцию getContext(). Сведения, связанные с удостоверениями, необходимо рассматривать в контексте вкладки как подсказку и проверять перед использованием. Обратитесь к примечаниям при переходе на страницу авторизации со всплывающей страницы.

Пример кода

Образец кода, показывающий процесс проверки подлинности на вкладке:

Название примера Описание .NET Node.js Манифест
Проверка подлинности в приложении В этом примере показано, как использовать проверку подлинности в боте, вкладке и расширении для обмена сообщениями с помощью единого входа и в Facebook с использованием имени пользователя и пароля. Просмотр Просмотр Просмотр

См. также

Подробные сведения о реализации проверки подлинности на вкладке с использованием идентификатора Microsoft Entra см. в разделе: