Авторизоваться с помощью AAD MSAL - логин уже выполняется - PullRequest
1 голос
/ 26 сентября 2019

У меня есть веб-сайт ASP.net, который использует MSAL для входа в систему.

Проблема, с которой я постоянно сталкиваюсь, заключается в том, что всякий раз, когда пользователь входит в систему, затем снова выходит из системы, пользователь перенаправляется на страницу выхода из системы.Эта страница реализует функцию new Msal.UserAgentApplication(msalConfig).logout() и перенаправляет пользователя обратно на страницу входа.

Это все работает отлично.Затем страница входа автоматически перенаправляет пользователя обратно на страницу входа AAD.

Если пользователь затем решает снова войти в систему, результат MyMsalObject.GetAccount() возвращает ноль, и возникает ошибка, в которой упоминается следующее:

ClientAuthError: Login_In_Progress: ошибка при входе в систему - вход в систему уже выполняется.

Сначала я использовал один файл js для обработки входа и выхода, затем я понял, чтоэто, вероятно, было не лучшим решением, так как он пытался войти в систему при загрузке.

Поэтому я решил разделить их на два отдельных файла JS, но это не решило мою проблему.

Определение msalObject:

var msalConfig = {
    auth: {
        clientId: "my_client_id",
        authority: "my_authority_url",
        redirectUri: "http://localhost:port"
    },
    cache: {
        cacheLocation: "localStorage",
        storeAuthStateInCookie: true
    }
};

var myMSALObj = new Msal.UserAgentApplication(msalConfig);

код для входа:

$(document).ready(function(){
    if (!myMSALObj.getAccount()) {
            myMSALObj.loginRedirect(msalConfig);
            acquireTokenRedirectAndCallMSGraph();
    }
});

Редактировать:

Некоторые дополнительные сведения.Теперь я сделал так, что пользователи должны нажать на кнопку, прежде чем они будут перенаправлены в Microsoft для входа в систему.

Вышеизложенное, к сожалению, все еще применяется.После успешного входа в первый раз и выхода из системы вторичная попытка входа не даст значения в функции getaccount(), хотя она работает с первого раза.

Ошибка, которую я получаю после того, как я 'Вы вошли в систему по-прежнему:

ClientAuthError: Login_In_Progress: Error during login call - login is already in progress.

Даже если я только что вошел в систему ..

У кого-нибудь есть решение?

Редактировать 2:

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

Файл конфигурацииТеперь определение в документе готово, и я переместил туда функцию выхода из системы.

Хотя сейчас я сталкиваюсь с новым вызовом ..

Refused to display 'https://login.microsoftonline.com/{{}}' in a frame because it set 'X-Frame-Options' to 'deny'.

И я не совсем уверен, если этоэто шаг вперед или назад.Сценарий воспроизведения остается тем же, вы входите в систему, затем выходите из системы и снова входите в нее, когда Microsoft отправляет пользователя обратно на страницу входа в систему. Я получаю сообщение об ошибке, упомянутое в этом редактировании, но я не получаю эту ошибку 1-го числа.попытка входа в систему.

Ответ, указанный на: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/FAQs#q6-how-to-avoid-page-reloads-when-acquiring-and-renewing-tokens-silently не помогает вообще, я использую хром, но он все еще не работает ..

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