Проблемы с Office Dialog API с Edge и IE - PullRequest
0 голосов
/ 21 февраля 2019

Я использую Dialog API и Office.context.ui.displayDialogAsync () в моей надстройке React + Typescript Outlook для реализации специального потока входа в систему.Пользователь должен сначала пройти аутентификацию в Office 365, затем мы используем токены OAuth с внутренним API для входа в систему с помощью AzureADFS, чтобы получить дополнительные токены для другого API, из которого надстройка получает данные.Все прекрасно работает в Outlook Online на Chrome и Firefox, а также на рабочем столе Outlook.Но в Edge и IE диалог никогда не закрывается, и я не получаю токены авторизации.

ПРИМЕЧАНИЕ. Моя реализация входа в систему основана на следующем примере: https://github.com/OfficeDev/Office-Add-in-Dialog-API-Simple-Example/blob/master/SimpleDialogSampleWeb/DialogHelper.js

собрал воедино грубое извлечение кода для моего процесса входа из надстройки здесь: https://stackblitz.com/edit/office-js-dialog-api (очевидно, что его нельзя запустить без приложения хоста Office)

Основной поток:

  • пользователь нажимает кнопку в компоненте «Вход в систему» ​​моего приложения
  • вызывать Office.context.ui.displayDialogAsync ('https://login.microsoftonline.com/common/oauth2/authorize?nonce=nonce01234&response_mode=fragment&redirect_uri=https://localhost:4200/redirect&response_type=id_token code & prompt = login & access_type = offline & client_id = {CLIENTID} & tenant= common ', {height: 50, width: 50}, this.dialogCallback)
  • пользователь проходит проверку подлинности с помощью O365 / OAuth, затем перенаправляется во внутренний поставщик удостоверений AZADFS для повторной проверки подлинности пользователя с помощью AD, и когдауспешно, закройте диалоговое окно
  • После закрытия запускается обратный вызов dialogMessageReceivedHandler, и я извлекаю значения id_token и кода и использую их для входа во внутренний веб-API

.Это две похожие, но разные проблемы, когда Edge и IE размещают надстройку:

1) Edge: обратный вызов dialogMessageReceivedHandler передается Dialog.addEventHandler в функции dialogCallback, которая запускается после Office.context.ui.displayDialogAsync не получает удар .Значение asyncResult является «преуспевающим» в функции dialogCallback, поэтому ошибки нет.Страница «Переход на страницу входа в вашу организацию» просто вращается, а вторая страница AZADFS не загружается

2) IE: страница входа в O365 успешно перенаправляет на вторую страницу входа AZADFS, поэтому пользователь можетвведите их кредиты AD.Однако после того, как они отправили свои учетные данные, dialogEventReceivedHandler запускается и возвращается 12006 - что означает, что пользователь отменил вход в систему, но это, конечно, не так - это ввод / отправка / ОК или что-то еще.Таким образом, та же проблема: обратный вызов dialogMessageReceivedHandler не попадает.

Что здесь происходит?Есть ли что-то несовместимое с Dialog API в Edge и IE?Или в моей реализации есть ошибка, которая каким-то чудесным образом работает только в Chrome и Firefox?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...