AWS Elastic Load Balancer(ELB)背后的Windows身份验证无效

时间:2014-04-08 16:22:01

标签: authentication amazon-web-services windows-authentication kerberos

我有一个使用Windows身份验证的ASP .NET MVC 5站点。主页面仅显示当前的标识名称(Controller.User.Identity.Name)以进行测试。 将网站部署到服务器(Windows Server 2012)并在IIS上启用Windows身份验证后,我将访问直接访问服务器的页面。它会提示输入凭据,我提供一次AD用户名/密码就行了。到目前为止一切都很好。

现在,如果我在AWS Elastic Load Balancer后面有相同的服务器(只有那个服务器)并且我在负载均衡器上点击了该站点,我发现了两个问题:

  • 页面会多次提示输入凭据。点击OK几次后就可以了。
  • 我有一位同事在他的机器上登录(他也要多次点击),然后我又回到了我的电脑。当我访问网址时,它没有提示。它立即起作用,它说现在的用户是我的同事。

这很奇怪。几乎像Kerberos票据因负载均衡器而丢失或混乱。我尝试了thisstep 4 from here,但仍然没有运气。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

根据这篇博客文章,如果你将它切换到TCP模式,ELB将会起作用:

https://cloudninjablog.wordpress.com/2014/08/22/configuring-aws-elb-to-work-with-windows-authentication/

答案 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 后面的同一台服务器上完成身份验证和协商。