ARR无法通过Windows身份验证

时间:2016-06-22 15:24:57

标签: authentication iis arr

我有一个使用Windows身份验证的Intranet网站。通过AJAX,它使用同一域中的Web服务,该服务也使用Windows身份验证。我只使用ARR作为反向代理(没有负载平衡),我试图将Windows身份验证传递给Web服务

反向代理可以使用基本身份验证,但不能使用Windows身份验证。

我的物理设置是单个Windows 2008 R2服务器,其网站,Web API服务和ARR都位于同一台服务器上。我没有在Server Farm下添加任何内容,因为所有内容都在同一台机器上。

我已将网站和网络API服务设置为仅限Windows身份验证,服务器和默认网站仅允许匿名(若干文章称ARR必须使用匿名)。我已在设置了Windows身份验证的站点IIS配置中设置useAppPoolCredentials = true。

我已经尝试将身份验证提供程序限制为NTLM以避免Kerberos / SPN并发症,我还尝试了包含Negotiate以便使用Kerberos。

对于Kerberos,我使用ARR,外部网站和内部Web服务用作app pool身份的单域帐户为服务器NetBIOS和FQDN以及网站和Web服务FQDM设置了SPN。 (例如:setspn -s HTTP / domain / account)

我可以直接浏览内部Web服务并且我的Windows身份验证成功但如果我使用该网站,则对Web服务的重写请求会收到401.1错误。在Fiddler中,我可以看到从浏览器到外部网站的三个请求。最后两个在标题中有我的Windows身份验证。在服务器上,内部Web服务的IIS日志显示请求中没有Windows帐户信息。

为什么ARR无法将我的Windows凭据传递给服务?

1 个答案:

答案 0 :(得分:0)

ARR代理的IIS上下文不得使用Windows身份验证。它必须设置为匿名。代理的后端服务可以使用Windows身份验证。