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