我有一个WebAPI应用程序,希望使用Forms authenticnticaiton,或我自己的自定义Basic或Digest身份验证。它适用于大多数服务器。但是在一些服务器上它不起作用。
我发现当身份验证失败时,这是因为IIS已对App Pool用户进行了身份验证。 Thread.CurrentPrincipal.Identity.AuthenticationType =“Negotiate”。 AFAIK这是Windows身份验证。但是,对于相关网站已禁用Windows身份验证,我甚至在服务器上卸载Windows身份验证功能时仍然遇到了同样的问题。
我发现将runAllManagedModulesForAllRequests设置为true将解决此问题,尽管这不是一个理想的解决方法,因为它会增加所有请求的开销,即使是那些通过静态处理程序运行的请求。
如果有人能告诉我为什么会这样,或者如何在IIS上调试身份验证过程,那将非常有帮助。
编辑:IIS7 / 7.5集成管道如果有所作为
答案 0 :(得分:1)
在遇到类似问题时,这是我的观察和建议。
该问题可能与匿名user account
有关,后者用作匿名用户身份。默认设置可能是问题。请在这里阅读更多详细信息:
摘要:
使用IIS 7.0 UI,转到身份验证页面并选择匿名身份验证。然后在右键单击Edit
并选择要用于此的用户。如果此(新选择的)用户可以访问所有静态文件,则所有用户都应该开始工作。选择App Pool Identity
将授予为当前池用户帐户指定的访问权限。
默认值为IUSR,在此处详细描述: