Не удалось получить объекты tokens / msal в angularJS после успешного входа в AzureAD

Я использую библиотеку msal.js 1.3.2 для аутентификации Azure AD в angularJS. После успешного входа в систему после перенаправления не происходит получение объектов userInfo object / msal, поскольку они инициализируются после перенаправления. Вот мой код

refApp.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(false).hashPrefix('');
}]);
refApp.config(['msalAuthenticationServiceProvider', '$httpProvider', function (msalProvider,$httpProvider) {

    window.applicationConfig = {
        clientID: '<client id>'
    };

   msalProvider.init(
        {
            authority: 'https://login.microsoftonline.com/<tenant>.onmicrosoft.com',
            validateAuthority : false,
            clientID: applicationConfig.clientID,
            cacheLocation: 'sessionStorage',
            postLogoutRedirectUri: 'https://localhost:8080/logout',
            tokenReceivedCallback: function (errorDesc, token, error, tokenType) { 
                console.log(token);
            }
        },
        $httpProvider
    );
}]);
refApp.controller('myController', ['$scope', '$rootScope','$stateParams', '$state', '$location','accountServices', 'msalAuthenticationService', function($scope,$rootScope,$stateParams, $state, $location, accountServices,msalService){
    $scope.dispWelcomePage = true;
    console.log(msalService); // prints all initialized values after redirect
    console.log(msal); // prints all initialized values after redirect
    if(!(typeof msalService.userInfo === 'undefined' )){
        console.log('userInfo.isAuthenticated is '+msalService.userInfo.isAuthenticated);}//Prints false
    $scope.redirectToLoginPage = function(){
    console.log("Redirecting to Login page");
    msalService.loginRedirect();
}

Я выполнил все шаги, указанные в ссылке ниже https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angularjs Кто-нибудь может предложить?


person shyam sunder    schedule 11.06.2020    source источник


Ответы (2)


Убедитесь, что вы делаете запрос на получение токена после успешного входа в систему.

  // No callback. App resumes after closing or moving to new page.
                    // Check token and username
                    updateDataFromCache(_msal.loginScopes);
                    if (!_oauthData.isAuthenticated && _oauthData.userName && !_msal._renewActive) {
                        // id_token is expired or not present
                        var self = $injector.get('msalAuthenticationService');
                        self.acquireTokenSilent(_msal.loginScopes).then(function (token) {
                            if (token) {
                                _oauthData.isAuthenticated = true;
                            }
                        }, function (error) {
                            var errorParts = error.split('|');
                            $rootScope.$broadcast('msal:loginFailure', errorParts[0], errorParts[1]);
                        });
                    }

Было бы лучше избегать Angular js и перейти на Angular с помощью msal. Поскольку будет доступно больше поддержки и обновлений.

person Raghavendra beldona    schedule 11.06.2020
comment
Большое спасибо за ваш ответ. То, что я наблюдал, - это набор кода, который никогда не выполнялся после успешного перенаправления входа в систему. Возможно, мне что-то не хватает $ scope. $ On (msal: loginSuccess, function () {console.log (loginSuccess);}); $ scope. $ on (msal: loginFailure, function () {console.log (loginFailure);}); $ scope. $ on (msal: notAuthorized, функция (событие, отклонение, forResource) {console.log (notAuthorized);}); $ scope. $ on (msal: acquTokenSuccess, функция (событие, tokenOut) {console.log (acquTokenSuccess);}); - person shyam sunder; 12.06.2020
comment
Также я думаю, что проблема в том, что объекты msal и msalService инициализируются после успешного перенаправления входа в систему. Извините, если мне не хватает деталей - person shyam sunder; 12.06.2020
comment
Проголосовали, потому что это просто ссылка без какого-либо примера, а также ссылка мертва - person gsubiran; 12.08.2020
comment
@gsubiran Извините, я думаю, что предоставленная ссылка на образец была обновлена ​​в последнее время. - person Raghavendra beldona; 13.08.2020
comment
обновил ответ, так как предыдущий образец в настоящее время недоступен - person Raghavendra beldona; 13.08.2020

Получите от localStorage или sessionStorage в соответствии с вашей конфигурацией, если вход прошел успешно.

В некоторых случаях после успешной аутентификации MSAL возвращает другой ответ, чем ожидалось.

Та же проблема может быть воспроизведена на сегодняшний день в примере приложения azure angular, загруженном с портала Azure ›Регистрация приложений› Выберите свое приложение ›Быстрый старт› SPA ›Angular.

person Anulal S    schedule 20.10.2020