Из AD B2C образец от Microsoft я смог успешно войти в систему и выйти из своего собственного клиента во всех браузерах, кроме Edge, где выход из системы ведет себя странно .
Проблема: При выходе из Edge и последующей попытке нового входа в систему браузер быстро перенаправляется в Azure, а затем предыдущий пользователь выглядит как auto logged в Azure без запроса учетных данных.Это явно не то, что мы хотим.
По сути, выход из системы в Edge, по-видимому, вообще не был успешным, и мы должны дождаться истечения времени ожидания сеанса Azure, чтобы попытаться снова войти в систему должным образом.Это происходит только в развернутом экземпляре dev, а не при локальном запуске в Edge.
Вопрос : Есть ли какое-то решение для получения полного выхода из системы для работы в Edge?Почему я могу испытывать это только в Edge?
Способ входа:
public void Login( )
{
//Use the default policy (specified in Startup.Auth) to process the sign up / sign in flow
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge();
return;
}
Response.Redirect("/");
}
Способ выхода из системы:
/*
* Called when requesting to sign out
*/
public void SignOut( )
{
// To sign out the user, you should issue an OpenIDConnect sign out request.
if (Request.IsAuthenticated)
{
IEnumerable<AuthenticationDescription> authTypes = HttpContext.GetOwinContext().Authentication.GetAuthenticationTypes();
HttpContext.GetOwinContext().Authentication.SignOut( authTypes.Select(t => t.AuthenticationType).ToArray());
}
}
Я попытался добавить Session.RemoveAll();
Session.Abandon();
в выход из системы, ноэто не сработало.
Метод запуска, как показано в примере.
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
...);
...