authContext.login () вызывает «Отказ в отображении« login.microsoftonline.com… »во фрейме, поскольку для параметра« X-Frame-Options »установлено значение« deny »» - PullRequest
3 голосов
/ 21 января 2020

В настоящее время я пытаюсь внедрить свой веб-сайт в команды Microsoft. Для этого я сделал собственное приложение с App Studio. В этом приложении у меня есть вкладка, чтобы перейти на мой сайт. На этом веб-сайте есть кнопка, которая выполняет код, в котором он пытается выполнить authContext.login (), в результате чего сайт перенаправляется на вход в Microsoft и обратно на перенаправление.

В веб-браузерах (Firefox, Chrome, Edge) все отлично работает. Но когда я пытаюсь использовать authContext.login () в клиенте Teams Desktop, я получаю эту ошибку в консоли DevTools (из-за соображений безопасности я изменил некоторые шестнадцатеричные коды для этого поста):

Отказался отображать https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=1904f197-dae8-4740-94f2-e12dee41b451&redirect_uri=https%3A%2F%2Fsomeadress.com%2Freally%2F&state=19484c2c-2aff-463a-9cba-2894af66c09d&client-request-id=91308f53-96a1-4f2b-8ee4-774b2f168c6b&x-client-SKU=Js&x-client-Ver=1.0.15&nonce=5cabfef7-36aa-470a-aaa3-754448369ab4&sso_reload=true 'во фрейме, потому что он установил' X-Frame-Options 'в' deny '.

Веб-сайт отображается до кнопки с authContext .login () выполняется, затем исчезает и выдается ошибка.

Это фрагмент кода моей кнопки:

<!--- Import packages for authentication information in Teams/Azure --->
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.15/js/adal.min.js"  crossorigin="anonymous"></script>

...

function loginO365() {
    let config = {
        clientId: "190af997-d6f8-4730-9462-e13dee41d451",
        redirectUri: "#application.gc_app_rootURL#", // same URL as redirect in error and Azure app
        cacheLocation: "localStorage",
        navigateToLoginRequestUrl: true,
    };

    let authContext = new AuthenticationContext(config);
    let isCallback = authContext.isCallback(window.location.hash);
    authContext.handleWindowCallback();
    authContext.login(); // causes error
}

Мои вопросы:

  1. Что вызывает это?
  2. Почему это не так? происходит в веб-браузерах?
  3. Как это исправить?

1 Ответ

2 голосов
/ 10 февраля 2020

Microsoft не позволяет открывать свой диалог аутентификации в I-кадре. Он отлично работает в браузере, но MS Teams реализован на I-frame, поэтому вы получаете эту ошибку.

Пожалуйста, обратите внимание на Поток аутентификации Microsoft Teams для вкладок flow.

Вот чернила для Пример кода авторизации

...