Amazon Cognito как общий поставщик OAuth2 для бота из MSBotFramework в Teams

#botframework #amazon-cognito #microsoft-teams

#botframework #amazon-cognito #microsoft-teams

Вопрос:

Я собрал этот образец для интеграции бота в Microsoft Teams:

https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/46.teams-auth

Хорошая новость в том, что он отлично работает из коробки с подключением к Azure AD в качестве входа в OAuth2.

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

Это мои настройки подключения для общего поставщика

введите описание изображения здесь

Я скрыл фактические идентификаторы по понятным причинам, но основные URL-адреса присутствуют, как указано в документах Cognito.

Я также добавил «token.botframework.com » и «*.amazoncognito.com » в списке допустимых доменов манифеста.

Теперь, когда я нажимаю на кнопку «Войти в карточку», открывается всплывающее окно, но я получаю ошибку redirect_mismatch в URL, вот так

введите описание изображения здесь

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

Однако в коде примера для бота я, похоже, не вижу, где вы указываете такой URL обратного вызова при работе с запросом OAuth напрямую.

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

У каких-либо мастеров здесь есть идеи по этому поводу? Я был бы очень признателен за любую помощь.

Спасибо!

ОТРЕДАКТИРУЙТЕ в соответствии с запросом, вот страница настроек для клиента приложения

введите описание изображения здесь

Учитывая, что это приложение MS Teams, у меня настроены туннели ngrok для трафика, поэтому я добавляю туда оба URL-адреса на всякий случай… localhost: 3000 на самом деле является местом, где находится ngrok.туннель ввода-вывода указывает на.

И вот доказательство того, что наш размещенный пользовательский интерфейс при открытии из пула пользователей действительно отображается и в redirect_uri локального хоста: 3000/

введите описание изображения здесь

Комментарии:

1. Добавили ли вы URL своего веб-приложения в URL обратного вызова клиента Cognito App? Это находится в консоли Cognito в разделе Интеграция приложений -> Настройки клиента приложения

2. @Дилан, спасибо за быстрый ответ. Я добавил его, как указано на добавленных скриншотах в OP

3. Не уверен, поможет ли это, но вы пробовали удалять косую черту в конце URL-адреса локального хостинга?

4. Я пробовал с и без, к сожалению, безрезультатно.

5. При использовании встроенной поддержки аутентификации в службе Azure Bot Service она полностью обрабатывает перенаправления аутентификации. Итак, ваш зарегистрированный URL перенаправления («URL обратного вызова» в Amazon Cognito?) должно быть https://token.botframework.com/.auth/web/redirect . Это должен был быть ваш URL-адрес перенаправления, когда вы пробовали его и с AAD.

Ответ №1:

(Публикую мой комментарий выше в качестве ответа, поскольку он, похоже, решил проблему.)

При использовании встроенной поддержки аутентификации в Azure Bot Service, он полностью обрабатывает перенаправления аутентификации. Итак, ваш зарегистрированный URL перенаправления («URL обратного вызова» в Amazon Cognito?) должно быть https://token.botframework.com/.auth/web/redirect . Это должен был быть ваш URL-адрес перенаправления, когда вы пробовали его и с AAD, как указано в документации Bot Framework для добавления аутентификации к боту.