登录到Microsoft登录页面后,Azure AD卡住了

时间:2017-11-01 06:08:39

标签: asp.net-mvc owin azure-active-directory openid-connect dotnetopenauth

我是Azure AD的新手。

我有一个与Azure AD身份验证集成的ASP.Net Azure应用程序。我已经在azure云上部署了应用程序,并将其配置为在http上运行。有时Azure AD在登录屏幕中单击SignIn按钮后卡住,并且不会重定向到我的应用程序。

我在github上发现了一个建议,即在CookieAuthenticationOptions中使用CookieSecure = CookieSecureOption.SameAsRequest。我尝试这样做并在azure中部署解决方案,但仍然无法正常工作。以下是Startup.cs的代码片段

public void ConfigureAuth(IAppBuilder app)
    {
        string clientId = GetConfigValue("ida_ClientId");
        string aadInstance = GetConfigValue("ida_AADInstance");
        string tenant = GetConfigValue("ida_Tenant");
        string domain = GetConfigValue("ida_Domain");
        string authority = GetConfigValue("ida_Authority");
        string postLogoutRedirectUri = GetConfigValue("ida_RedirectUri");

        bool devEnvironment = Convert.ToBoolean(GetConfigValue("DevEnvironment"));

        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions()
        {
            CookieHttpOnly = true,
            CookieSecure = devEnvironment ? CookieSecureOption.SameAsRequest : CookieSecureOption.Always,
        });

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

    private string GetConfigValue(string key)
    {
        if (RoleEnvironment.IsAvailable)
        {
            return RoleEnvironment.GetConfigurationSettingValue(key);
        }
        else
        {
            return ConfigurationManager.AppSettings[key];
        }
    }

请帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

如线程中所指定的,如果您使用HTTP然后重定向到HTTPS,则通常会发生此问题。确保您一直使用HTTPS以避免此问题。

此外,如果您在Azure中发布并且您正在使用OWIN中间件,请确保禁用' express authentication'通过禁用“身份验证/授权”功能特征