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

时间:2017-03-03 13:21:10

标签: asp.net amazon-s3 asp.net-core load-balancing openid

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

1 个答案:

答案 0 :(得分:3)

根据@Tratcher的评论,通过构建检查X-Forwarded标头的中间件,解决了这个问题:

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();
});