Проблема:
При нажатии на кнопку входа угловое приложение корректно отправляет запрос на 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
Кто-нибудь видел эту проблему и знает или как решить проблему?