У меня есть веб-сайт 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 не помогает вообще, я использую хром, но он все еще не работает ..