ARR无法通过Windows身份验证

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

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

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

我已将网站和Web 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中,我可以看到从浏览器到外部网站的三个请求 . 最后两个在 Headers 中有我的Windows身份验证 . 在服务器上,内部Web服务的IIS日志显示请求中没有Windows帐户信息 .

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

回答(1)

2 years ago

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