c# - 带有 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 项目,并在部署配置文件中启用了相同的功能:
我不知道还有什么可以尝试的,帮助。
解决方案
同样在这里,我没有选择这个。您只是无法重现这一点以找到确切的原因。
这就是我在此期间所做的:
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 或者...
推荐阅读
- react-native - 进入新屏幕后如何完成旧屏幕
- javascript - 右键单击在音频上被禁用
- java - 使用 Thread.sleep 编写代码单元测试的最佳方法
- python - Amazon boto3 将文件从 S3 下载到 tempfile
- vb.net - Ctrl + H = 文本框中的退格键?
- model-checking - 为什么无限循环不会导致使用 Promela 和 Spin 进行模型检查时出错?
- r - 如何为不规则数据创建 3 路数据结构?
- c - 我的代码有什么问题给我错误的输出吗?
- java - Spring自定义身份验证过滤器和自定义jwtfilter
- c# - 为什么 Lock 语句不能按预期工作