1

我有一个 WebAPI 应用程序,它希望使用表单身份验证,或者我自己的自定义基本或摘要身份验证。它在大多数服务器上都能正常工作。但是在一些服务器上它不起作用。

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

我发现将 runAllManagedModulesForAllRequests 设置为 true 可以解决这个问题,尽管它不是一个理想的解决方法,因为它会增加所有请求的开销,即使是那些通过静态处理程序运行的请求。

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

编辑: IIS7/7.5 Integrated Pipeline 如果它有所作为

4

1 回答 1

1

在遇到类似问题时,这是我的观察和建议。

该问题可能与user account用作匿名用户身份的匿名有关。默认设置可能是问题所在。请在此处阅读更多详细信息:

摘要

使用 IIS 7.0 UI,转到Authentication页面并选择Anonymous Authentication。然后右键单击Edit并选择要用于此的用户。如果此(新选择的)用户有权访问所有静态文件,则所有文件都应该开始工作。选择App Pool Identity将授予为当前池用户帐户指定的访问权限。

默认值为 IUSR,这里有更详细的描述:

Windows Server 2008 R2 / IIS7.5 上缺少 IUSR 帐户

于 2012-11-22T09:14:12.230 回答