首页 > 解决方案 > 带有 ASP.NET MVC 5 应用程序的 Microsoft 身份验证循环

问题描述

我在 Azure 上部署了一个 ASP.NET MVC 5 Web 应用程序,该应用程序存在身份验证循环。

一开始我发现这是一个HTTP问题,所以我HTTPS从Azure强行。问题消失了,但在部署后一段时间又出现了。再次部署(相同版本)解决了循环,该循环会在一段时间后返回。会是什么?我应该寻找什么?

到目前为止,我已经尝试在我的Web.config

<add key="owin:AppStartup" value="false"></add>

这在我的Startup.auth.cs

public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            CookieSecure = CookieSecureOption.SameAsRequest,
        });
    app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri
            });
}

我通过使用组织帐户指定登录创建了 MVC 5 项目,并在部署配置文件中启用了相同的功能:

部署设置

我不知道还有什么可以尝试的,帮助。

标签: c#azureauthenticationasp.net-mvc-5owin

解决方案


同样在这里,我没有选择这个。您只是无法重现这一点以找到确切的原因。

这就是我在此期间所做的:

AuthStartup.cs:

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    CookieSecure = CookieSecureOption.Never
});

全球.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (!Request.IsSecureConnection)
    Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] +
    httpContext.Current.Request.RawUrl);
}

覆盖授权属性:

public class AuthorizeFromHTTPAttribute: AuthorizeAttribute
{
   public override void OnAuthorization(AuthorizationContext filterContext)
   {
       if (!filterContext.HttpContext.Request.IsSecureConnection)
       {
           UriBuilder redirectUrl = new UriBuilder(
              filterContext.HttpContext.Request.Url);
           redirectUrl.Scheme = "HTTPS";
           redirectUrl.Port = 443;
           filterContext.HttpContext.Response.Redirect(redirectUrl.ToString());
           return;
       }
       else
       {
           base.OnAuthorization(filterContext);
       }
   }
}

从 Visual Studio 到 Azure 的新发布解决了一段时间。那么这是服务器端的东西吗?

工作 InPrivate 或 InCongnito 也不能解决它。清理你的 cookie 或者...


推荐阅读