Получение ошибки путем добавления Cortana в качестве канала для моего бота с использованием Microsoft Bot Framework - PullRequest
0 голосов
/ 23 марта 2019

Ошибка, когда Cortana пытается аутентифицировать моего бота

Я пытаюсь подключить Cortana к своему боту QnA с помощью MS Bot Framework с Azure Bot Service.

Во время тестирования на рабочем столе Windows 10, когда я говорю, фраза вызова - Кортана пытается аутентифицировать меня, но выдает ошибку ниже. Пожалуйста, дайте мне знать, что я делаю не так?

Изображение ошибки

Настройки Cortana

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Недавно я реализовал навык Cortana и столкнулся с несколькими проблемами при выполнении аутентификации.Однако я вижу несколько проблем с вашей конфигурацией:

  • User.Read.All требуется согласие администратора.Это действительно то, что вы хотите, или вы ищете User.ReadBasic.All .В зависимости от вашей настройки, это уже заблокирует аутентификацию.Подробнее см. Документацию Microsoft Graph .
  • В конфигурации канала Cortana в разделе Схема авторизации клиента убедитесь, что вы выбрали Учетные данные в теле запроса .Я не вижу этого на твоих скриншотах, но считаю, что стоит это проверить.

Кроме того, вот мои лучшие практики, которые должны заставить ваш сценарий работать:

  • Не использовать субъект службы (регистрация приложения)вашего бота для аутентификации Cortana.
  • Вместо создайте отдельную регистрацию приложения для своего арендатора (например, с именем бренда Ваш бот для Cortana ) и настройте его в своей конфигурации канала Cortana (appId / clientсекрет)
  • Убедитесь, что вы настраиваете необходимые области не только для конфигурации канала Cortana вашего бота, но и для регистрации вашего приложения ( Перейти к AAD - Регистрация приложений (предварительный просмотр) - Разрешение API).Помните, что области в конфигурации канала Cortana могут быть подмножеством областей, настроенных при регистрации приложения.Это одна из причин, почему я рекомендую специализированные регистрации приложений для вашего бота и Cortana.
  • Убедитесь, что порядок областей в конфигурации канала Cortana составляет openid offline_access profile User.Read User.ReadBasic.All (порядок по какой-то причине важен - по крайней мере, по моему опыту).
0 голосов
/ 23 марта 2019

Если вы следовали этому руководству ...

Надеюсь, вы узнали о сферах. Если нет, подайте комментарий github для уточнения.

User.Read необходим для доступа к профилю для AAD IAM. Вам это не нужно, если вы не делаете профильные вызовы на графике MS.

Если вы входите только в AAD IAM, вам нужна область действия openid.

Если вы хотите, чтобы адрес электронной почты в токене JWT был возвращен, вы добавляете область действия электронной почты.

Если вы хотите, чтобы данные профиля пользователя (имя) в токене JWT добавлялись в область профиля.

Если вы хотите, чтобы Cortana обрабатывал для вас токены обновления (т.е. не повторяйте вход каждые два часа), вы добавляете область offline_access.

Когда вы добавляете регистрацию своего приложения, вам нужно предоставить все эти области в веб-приложение и добавить URI перенаправления cortana. Как уже упоминалось, для некоторых областей требуется администратор (если вы используете учетные записи AAD).

Ваша конфигурация канала cortana должна запрашивать эти области (точно).

Тогда вы не получите ошибок разрешения.

Вы можете увидеть, какие области были предоставлены токену JWT, расшифровав его.

...