我有一个使用Windows身份验证的ASP .NET MVC 5站点。主页面仅显示当前的标识名称(Controller.User.Identity.Name)以进行测试。 将网站部署到服务器(Windows Server 2012)并在IIS上启用Windows身份验证后,我将访问直接访问服务器的页面。它会提示输入凭据,我提供一次AD用户名/密码就行了。到目前为止一切都很好。
现在,如果我在AWS Elastic Load Balancer后面有相同的服务器(只有那个服务器)并且我在负载均衡器上点击了该站点,我发现了两个问题:
这很奇怪。几乎像Kerberos票据因负载均衡器而丢失或混乱。我尝试了this和step 4 from here,但仍然没有运气。
有什么想法吗?
答案 0 :(得分:4)
根据这篇博客文章,如果你将它切换到TCP模式,ELB将会起作用:
答案 1 :(得分:1)
我要做的第一件事是启用"访问日志"您的ELB的选项,以便您可以准确地看到ELB级别可能记录的错误。您可以在下面看到有关如何执行此操作的步骤。您还可能希望确保在ELB和Web服务器之间允许正确的端口(如果它们位于不同的安全组中)。最后检查您的IIS日志,看看他们在通过ELB访问该URL时提供了哪些信息。
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-access-logs.html
答案 2 :(得分:0)
似乎Windows身份验证仅适用于TCP模式下的经典负载均衡器或新的网络负载均衡器。在L7(即应用LB)上无法进行NTLM或Kerberos身份验证,因为它断开了用于终止,检查或重定向的连接(例如通过代理)。
答案 3 :(得分:0)
您可能需要在 elb 上启用粘性会话,以便在 elb 后面的同一台服务器上完成身份验证和协商。