DotNetOpenAuth - 如何在负载均衡器后使其工作?

3
我有一个负载均衡器,其后面有一些Web服务器。命中负载均衡器的流量受到SSL保护,从负载均衡器到Web服务器的数据以未加密的HTTP流量发送。我在Web服务器上使用DotNetOpenAuth OAuth服务提供程序来支持负载均衡器后面的请求。
当我的客户端发送请求时,我正在访问https://www.mydomain.com/OAuth.ashx。但是,一旦它到达负载均衡器,协议就会更改为HTTP,并且HttpContext的Request.Url实际读取的URL是http://www.mydomain.com/OAuth.ashx
URL中的协议正在被修改。是否有人遇到过这个问题,如果有,您是如何解决这个问题的?我唯一能想到的是获取DotNetOpenAuth源代码,修改代码以强制使用https URL,然后编译它并使用它代替预装的程序集。
任何方向都将不胜感激。

可能是 DotNetOpenAuth RP fails behind SSL appliance 的重复问题。 - Andrew Arnott
2个回答

6

如果有人遇到这个问题,以下是解决方案:

DotNetOpenAuth RP在SSL设备后面失败

我和我的主机交谈,并让他们向每个请求添加X_FORWARDED_PROTO头并将其值设置为“HTTPS”。这解决了我们遇到的所有问题。


我希望他们只将该标头应用于实际作为HTTPS传入的请求。 - Andrew Arnott
感谢您的回复,安德鲁。我们将所有流量都强制转换为HTTPS传输到我们的负载均衡器。如果有HTTP请求进来,它会被重定向到HTTPS。我们在用户文档中已经说明了这一点,供那些使用我们OAuth服务提供商的人参考。很高兴您已经在另一篇帖子中回答了这个问题,因为我们曾经为此苦苦挣扎。 - Brandon

-1
联系您的网络管理员,他们可能有一个网络组件(例如负载均衡器)可以卸载SSL处理。因此,您可以使用HTTP协议或让他们禁用SSL卸载,我怀疑他们可能并不真正想这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接