У меня проблема с MSAL в Angular. Я использую пакет @azure/msal-angular
(версия 1.1.1).
Я работаю над приложением Angular, встроенным в систему ERP (Business Central). На данный момент у меня проблемы с аутентификацией.
Business Central встраивает приложение Angular, ссылаясь на файлы Angular dist из хранилища BLOB-объектов Azure.
При входе в систему провайдер входа не может перенаправить обратно в приложение Angular, поскольку оно встроено в Business Central, а общедоступный URL-адрес для вызова маршрута в самом Angular при встраивании отсутствует.
Я разместил приложение Angular на общедоступной конечной точке, а во встроенном приложении использовал внешнее приложение для перенаправления обратно после аутентификации. Я использовал другую библиотеку для поддержки аутентификации таким образом, и при использовании всплывающего окна для аутентификации я перенаправлялся на простую HTML-страницу с парой строк JavaScript, чтобы получить access_token / id_token из сегментов URL. После получения я вызвал (window.opener || window.parent).postMessage(message, "*");
, чтобы уведомить родительское окно о результате аутентификации.
Но теперь у меня проблемы с MSAL. При запуске приложения Angular только локально, с redirectURL https: // localhost: 4200 / процесс аутентификации работает нормально. Но при изменении этого на это внешнее размещенное приложение Angular (та же версия) отображается всплывающее окно с приложением (после перенаправления) с JWT в сегментах URL-адреса. И MSAL никак не реагирует на этот результат. Я думаю, потому что домен всплывающего окна отличается от родительского окна.
Есть ли способ исправить этот (сложный) способ аутентификации с помощью MSAL?