负载均衡器后面的MVC HTTPS重定向

时间:2017-02-17 19:21:22

标签: asp.net-mvc iis url-rewriting elastic-load-balancer

我在Amazon EC2上的某些IIS服务器中使用MVC5,在Amazon Elastic Load Balancer后面。 IIS服务器仅运行HTTP协议,ELB转换为HTTPS。

IIS服务器不知道用户是否通过HTTPS访问,因此我有一个重写规则检查" X-Forwarded-Proto"标头将用户重定向到HTTPS。

不幸的是,当需要登录时,MVC / IIS会将用户重定向到HTTP中的登录页面

如果我使用像http://www.redirect-checker.org/这样的工具查看我的网站,我会得到以下类型的结果:

  

http://example.com/

     

301永久移动(我的网址重写规则)

     

https://example.com/

     

302 Found(需要登录的重定向 - >为什么要使用HTTP?)

     

http://example.com/Account/Logon?ReturnUrl=%2F

     

301永久移动(再次我的网址重写规则)

     

https://example.com/Account/Logon?ReturnUrl=%2F

     

200 OK

我错过了什么吗?

我是否可以配置login-redirect来保留协议,从而消除其中一个重定向?

更好的是,我可以以某种方式在登录重定向规则之前并强制使用HTTPS,以便只有一个重定向吗?

非常感谢!

附录 我查看了像" RedirectToAction"发送地址,如" / Index2",而不是整个" http://example.com/Index2"。这很好,所以它保留了用户协议。

1 个答案:

答案 0 :(得分:0)

假设您正在使用ASP.NET表单身份验证,请查看web.config Authentication配置,并将requireSsl="true"添加到<forms>元素,如下所示:

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" />
</authentication>