优先参考(.Net框架/ASP.NETMVC):ASP.Net标识登录重定向强制执行协议(Https)
在.Net 6+中,这似乎仍然是一个“问题”。在某些情况下,由基础结构构造的返回url会产生http方案/协议,而不是oauth/external (谷歌等)的https。这显然失败了,因为它必须是https。
虽然我还没有深入研究,因为我还没有找到它的源代码(还没有?),但这可能是同一个“问题”--在应用程序级别上,它没有“看到”一个https请求(因为SSL是在某个地方卸载的),因此创建的url“匹配”了该方案/协议,从而导致了一个http重定向url。
到头来,不管我的主机有什么托管基础设施/配置,都是我无法控制的。因此,最终目标是强制执行 https (硬代码,跳过/覆盖任何适当的方案/协议检查/评估)。
在我的设置中没有什么特别之处,它在本地/dev (https)测试中运行良好。只有当应用程序最终托管(生产)时才是这样:
在启动program.cs中,这是我唯一用于外部登录的相关代码(以及标识包的脚手架/模板):
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<my_db_context>();
builder.Services.AddAuthentication().AddGoogle(goog =>
{
goog.ClientId = builder.Configuration["GoogleAuthClientId"];
goog.ClientSecret = builder.Configuration["GoogleAuthClientSecret"];
});这一问题:

httpshttp --这将使始终失败。有人能告诉我如何在.Net 6和更高版本中添加/重写选项的相关docs/source吗?(类似于以前在.Net框架/MVC中的实现)?
发布于 2022-12-03 02:38:03
答案在@Tratcher的评论中:
正式参考:配置ASP.NET核心以使用代理服务器和负载平衡器
就我的具体情况而言:
在某些情况下,可能无法将转发的头添加到代理到应用程序的请求中。如果代理强制所有公共外部请求都是HTTPS,则可以在使用任何类型的中间件之前手动设置该方案: ..。App.Use((上下文,下一步) => { context.Request.Scheme = "https";返回next(上下文);});.
https://stackoverflow.com/questions/74630363
复制相似问题