Azure AD B2C неправильно выходит из системы в Edge - PullRequest
0 голосов
/ 21 ноября 2018

Из 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(
...);

...

1 Ответ

0 голосов
/ 22 ноября 2018

Пожалуйста, обратитесь к описанию в документе Azure:

Если вы хотите выйти из приложения, недостаточно просто удалить куки-файлы вашего приложения или иным образом завершить сеанс с пользователем,Вы также должны перенаправить пользователя в Azure AD для выхода.Если вы этого не сделаете, пользователь может повторно подтвердить подлинность вашего приложения, не вводя свои учетные данные снова.Это связано с тем, что у них будет действительный сеанс единого входа в Azure AD.

Таким образом, вы можете просто перенаправить пользователя на конечную точку end_session:

GET https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?
p=b2c_1_sign_in
&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F

Подробнеесм. Azure Active Directory B2C: веб-вход с OpenID Connect

...