在负载均衡器后面设置 OpenId 和 AspCore

Setup OpenId and AspCore behind load balancer

我目前有一个 asp.net 核心应用程序,它使用 OpenId Connect 通过 Google 帐户进行身份验证。当这个应用程序被部署并位于负载平衡器后面时,它在重定向到登录页面时失败,因为它将 uri 设置为 http 而不是 https,它还将 openid 服务器的重定向 uri 设置为没有 https,是吗一种设置选项的方法,因此它知道应该使用 https?

根据@Tracher 的评论,这已通过构建检查 X-Forwarded headers 的中间件解决,如下所示:

app.Use(async (context, next) =>
{
  if (context.Request.Headers.ContainsKey("X-Forwarded-Proto") || 
      context.Request.Headers.ContainsKey("X-Forwarded-For"))
  {
      context.Request.Scheme = "https";
  }
  await next.Invoke();
});