我刚刚将我的代码移到了我们的QA环境中,它使用的是https,而在Dev中工作的内容在QA中是不起作用的,因为浏览器陷入了无限的重定向循环。我们的负载均衡器强制https,所以当登录重定向从代码发生时,由于某种原因,它试图重定向到http而不是https,负载均衡器会停止它并再次添加https,这会导致无限循环。我的问题是,为什么这段代码不只是重定向到https,路径在ConfigureServices()
方法中是相对的。我在fiddler中看过它,它确实使用http而不是https为重定向添加了FQDN。
是否需要向此处的选项添加某些属性以允许https重定向?
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/LogIn";
options.LogoutPath = "/Account/LogOff";
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
}
谢谢。
发布于 2018-06-13 18:58:42
我们只需使用:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
... //settings and logging initialization
app.Use((context, next) =>
{
context.Request.Scheme = "https";
return next();
});
... //all the rest middleware calls
}
在OWIN和.Net核心高达2.0的大多数情况下,它都会有所帮助
发布于 2018-06-14 04:51:32
基于@Programmer在对OP的评论中的建议,我看了一下:https://codeopinion.com/configuring-asp-net-core-behind-a-load-balancer/它准确地描述了我的情况(负载均衡器处的ssl终止和.net核心2.0应用程序重定向到http进行登录)。然后,我尝试使用文章建议的头通过LB发出请求,并在Startup
类的Configure()
方法中添加以下代码:
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedProto });
有趣的是,当我发出一个包含proto头的请求时:
X-Forwarded-Proto:https
在LB之外,它将这个头传递给应用程序,它工作得很好,没有无限的重定向循环。然而,当我们的基础设施人员将这个头添加到LB向LB后面的内部节点发出的请求时,我得到了一个到https的重定向,但它也将ip地址前缀到重定向URL (我们有一个netscaler LB)。显然,在默认情况下,当您添加自定义标头时,会有一个复选框来包含内部节点的IP,但必须取消选中该复选框。在那之后,我们就可以开始做生意了。
再次感谢@Programmer的帮助。你绝对给我指明了正确的方向。
发布于 2019-03-14 03:03:33
对于具有azure身份验证的.net核心2.1和更高版本,请尝试此代码。
services.Configure(AzureADDefaults.CookieScheme, options =>
{
options.Cookie.SameSite = SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
https://stackoverflow.com/questions/50820414
复制相似问题