0

Я работаю над созданием надстройки Office с Adal.js для интеграции AAD. И моя надстройка требует некоторых разрешений.Ошибка X-Frame-Option DENY при входе AAD в офисную надстройку

Когда я открываю надстройку в OneNote и пытаюсь вызвать логин от adal.js, он запрашивает login.microsoftonline.com и дает ошибку отказа X-Frame-Option.
Я думаю, что это потому, что офисная надстройка работает в iFrame, как я могу обойти это?

login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&cl…nt-SKU=Js&x-client-Ver=1.0.13&nonce=ced03385-f1ca-4206-bb23-6c3e8338a0d2:1 Refused to display 'https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_…ient-SKU=Js&x-client-Ver=1.0.13&nonce=ced03385-f1ca-4206-bb23-6c3e8338a0d2' in a frame because it set 'X-Frame-Options' to 'DENY'. 

ответ

3

Аутентификация OAuth потока в офисе веб-надстроек является известным issue.The лучшее объяснение проблемы можно найти here.

Из-за популярности clickjacking в Интернете обычно предотвращает отображение страниц входа в систему внутри фреймов. Метатег X-FRAME-Options в HTML упрощает для провайдеров реализацию этой защиты по широко распространенному или домену . Страницы, которые не являются «frameable» не будут загружаться последовательно в Управления надстройки

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

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

Вернемся к нашей проблеме Adal.js. Я считаю, что вы должны прекратить использовать adal.js, потому что он не предназначен для использования в нашем веб-контексте надстройки. Даже если они implemented a popup technique. Они не используют dialogAPI, когда они доступны.

Вы должны попытаться воспользоваться этим диалоговым окном, если это возможно, иначе вы столкнетесь с множеством проблем (деактивированное всплывающее окно, области безопасности и т. Д.).

Ваш лучший вариант заключается в реализации собственного механизма потока или использовать Office-js-helpers, как описано в this response

+1

Обратите внимание, что DialogAPI пока не доступен для Outlook, онлайн или любой версии OWA. – lgaud

+0

@lgaud хорошо пункт! вам нужно проверить доступность dialogApi и реализовать резервную зависимость от всплывающего окна. Проверьте этот образец, который я написал для получения дополнительной информации по теме https://github.com/Keluro/Office365-AddinWeb-SignInSample –