2012-11-22 33 views
1

我有一个WebAPI应用程序,希望使用Forms认证或我自己的自定义Basic或摘要式身份验证。它在大多数服务器上工作正常。但是在几台服务器上它不起作用。IIS使用AuthenticationType = Negotiate对应用池用户进行意外身份验证

我发现当身份验证失败时,它是因为IIS已经对App Pool用户进行了身份验证。 Thread.CurrentPrincipal.Identity.AuthenticationType =“协商”。 AFAIK这是Windows身份验证。但是,对于有问题的站点,Windows身份验证已被禁用,我甚至在卸载服务器上的Windows身份验证功能时仍然遇到同样的问题。

我发现将runAllManagedModulesForAllRequests设置为true将解决此问题,但它不是一种令人满意的解决方法,因为它会为所有请求(即使是通过静态处理程序运行的那些请求)增加开销。

如果有人能告诉我为什么会发生这种情况,或者如何在IIS上调试身份验证过程,这将非常有帮助。

编辑: IIS7/7.5综合管线,如果它的确与众不同

回答

1

虽然遇到了类似的问题,这是我的观察和建议。

该问题可能与匿名用户身份被用作的匿名user account有关。默认设置可能是问题。请阅读这里更多的细节:

摘要

使用IIS 7.0的用户界面,去认证页面并选择匿名身份验证。然后在右侧点击Edit并选择用于此目的的用户。如果这个(新选择的)用户可以访问所有静态文件,则所有人都应该开始工作。选择App Pool Identity将授予为当前池用户帐户指定的访问权限。

默认值是IUSR,这是更详细的描述如下:

Missing IUSR account on Windows Server 2008 R2/IIS7.5

+0

很好的建议,但似乎并没有为我所面临的问题。 – ScottS

相关问题