MVC 5, использующий Azure AD, не может выйти из системы - PullRequest
0 голосов
/ 25 сентября 2018

Я использую MVC5, аутентифицировал Azure AD с использованием OpenIdConnect.

Мое приложение работает под 4 различными регистрациями приложений Azure AD;localhost, версия DEV, версия UAT и производственная версия.

UAT и производство работают под разными слотами развертывания в одной и той же веб-службе Azure.

Все отлично работает, кроме выхода из системыфункциональность в слоте развертывания UAT в Azure.Когда я нажимаю «Выйти», я перехожу к выходу Microsoft из системы «Вы вышли из своей учетной записи».После того, как я вернусь к URL-адресу, он снова войдет в систему (я также нажал «не держать меня в системе»).

Есть идеи, почему это может происходить в одной среде?Манифесты регистрации приложения Azure AD практически идентичны, за исключением URL-адресов и уникальных идентификаторов.

Я использую пакет "UseKentorOwinCookieSaver".

Метод выхода:

    public void SignOut()
    {
        HttpContext.GetOwinContext().Authentication.SignOut(
            OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType
            );
    }

Startup.cs:

    public void ConfigureAuth(IAppBuilder app)
    {            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseKentorOwinCookieSaver();

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = context =>
                    {
                        context.HandleResponse();
                        context.Response.Redirect("/Error/message=" + context.Exception.Message);
                        return Task.FromResult(0);
                    },
                    SecurityTokenValidated = context =>
                    {
                        OnAuth();
                        return Task.FromResult(0);
                    }
                },                     
                AuthenticationMode = AuthenticationMode.Passive
            }
        );

        app.Use((context, next) =>
        {
            // The function to call...
            OnAuth();
            return next.Invoke();
        });

    }

1 Ответ

0 голосов
/ 25 сентября 2018

Ваши учетные данные, вероятно, кэшируются.Это поведение по умолчанию для Chrome и IE, и некоторые из них также разработаны Microsoft.Единый выход, к которому вы стремитесь, требует индивидуального кодирования для каждого приложения.Попробуйте войти в другой браузер в режиме инкогнито, чтобы проверить, не возникла ли эта проблема.

В этом разделе приведены некоторые способы решения проблемы.https://social.msdn.microsoft.com/Forums/azure/en-US/97199b97-a3f1-42ab-b5dc-103d3bc3cb53/azure-ad-single-sign-on-auto-sign-in-with-windows-credentials?forum=WindowsAzureAD

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