Asp.net mvc 使用Azure AD的MVC 5无法注销

Asp.net mvc 使用Azure AD的MVC 5无法注销,asp.net-mvc,azure,authentication,azure-active-directory,Asp.net Mvc,Azure,Authentication,Azure Active Directory,我正在使用MVC5,使用OpenIdConnect验证Azure广告 我的应用程序在4个不同的Azure AD应用程序注册下运行;本地主机、开发版本、UAT版本和生产版本 UAT和生产在Azure上同一web服务的不同部署槽下运行 除了Azure中UAT部署槽中的注销功能外,所有功能都可以完美运行。当我单击“注销”时,它会将我带到Microsoft注销“您已注销您的帐户”。在我导航回URL后,它会让我重新登录(我也单击了“不要让我一直登录”) 有没有关于为什么会在单一环境中发生这种情况的想法?除

我正在使用MVC5,使用OpenIdConnect验证Azure广告

我的应用程序在4个不同的Azure AD应用程序注册下运行;本地主机、开发版本、UAT版本和生产版本

UAT和生产在Azure上同一web服务的不同部署槽下运行

除了Azure中UAT部署槽中的注销功能外,所有功能都可以完美运行。当我单击“注销”时,它会将我带到Microsoft注销“您已注销您的帐户”。在我导航回URL后,它会让我重新登录(我也单击了“不要让我一直登录”)

有没有关于为什么会在单一环境中发生这种情况的想法?除了URL和唯一标识符之外,Azure AD应用程序注册清单几乎完全相同

我正在使用“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();
        });

    }

您的用户凭据可能正在缓存。这是Chrome和IE的默认行为,其中一些也是由Microsoft设计的。您想要的单一注销需要在每个应用程序上进行自定义编码。尝试以匿名模式从其他浏览器登录,以查看是否仍然存在此问题


此线程为您的情况提供了一些解决方法

谢谢你的回答,但这不是问题所在。我有相同的问题,无论浏览器,甚至不同的计算机。这个问题一直是第三方在我自己的网络之外进行测试的问题。