Angular 6, ADAL, Azure Redirect Uri, MS Edge перенаправляет на ../null - PullRequest
2 голосов
/ 08 июля 2019

Проблема:

При нажатии на кнопку входа угловое приложение корректно отправляет запрос на login.microsoft.com.На запрос приходит ответ с приложенным действительным токеном.При выполнении этого в Firefox / Chrome нет проблем, redirectUri обрабатывается правильно и перенаправляет на зарегистрированную страницу пользователя.

На Edge, однако, кажется, что некоторые версии Edge либо не читают ответ правильно, либо не создаютURL запроса входа в систему правильно.Результирующий конец redirectUri на сайте ./null (т. Е. https://[some URL] / null)

Проблема не существует при отладке, где реферер является localhost, перенаправление выполняется правильно.Только при развертывании в IIS перенаправление приводит к неверным результатам.

На сайте IIS есть правило перезаписи, которое перенаправляет запросы http в трафик https

Симптомы

Похоже, что это происходит только в определенной версии Edge.

Версия Edge 44.18362.10, EdgeHTML 18.18362 отвечает, как требуется, без проблем.

Версия Edge 44.17763.10, EdgeHTML 18.17763 выдает ошибку

Использование

Угловое 6.0.0

MsAdalAngular6Service (https://www.npmjs.com/package/microsoft-adal-angular6)

JWT-токен на предъявителя.

sessionStorage как хранилище токенов

app.module.ts

Инициатор MsAdal в импорте

MsAdalAngular6Module.forRoot({
      tenant: 'tenantID',
      clientId: 'clientID',
      redirectUri: window.location.origin,
      endpoints: { 
        [SITE ENDPOINTS]
      },
      navigateToLoginRequestUrl: true,
      cacheLocation: 'sessionStorage',
    })

Возможно, Edge интерпретирует window.location.originнеправильно, поскольку иногда он также вводит нулевое значение в запросе на вход в систему.

Попытка:

жестко закодировать значение redirectUri

использовать другой redirectUri windowконструкторы ('https://' + windows.location.hostname)

от: https://tosbourn.com/a-fix-for-window-location-origin-in-internet-explorer/

window.location.hostname + (window.location.port ? ':' + window.location.port: '');

множество других попыток, приводящих к одному и тому же результату.

return redirectUri заканчивается ./null

Кто-нибудь видел эту проблему и знает или как решить проблему?

1 Ответ

2 голосов
/ 12 июля 2019

Кажется, это задокументированная ошибка.https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/330 https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/Known-issues-on-Edge#issues

Один из обходных путей - установить для NavigateToLoginRequestUrl значение false в конфигурации MSAL.(Я вижу, у вас установлено значение по умолчанию true.) Если вы установите значение false, то пользователь не будет перенаправлен на страницу, с которой он / она запускается, но при обратном вызове вы можете сбросить местоположение браузера до желаемогоURL с использованием window.location.href.

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