【问题标题】:IIS unexpectedly authenticates App Pool user with AuthenticationType = NegotiateIIS 意外使用 AuthenticationType = Negotiate 对应用程序池用户进行身份验证
【发布时间】:2012-11-22 01:01:49
【问题描述】:

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

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

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

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

编辑: IIS7/7.5 集成管道(如果有所作为)

【问题讨论】:

    标签: c# asp.net iis asp.net-web-api


    【解决方案1】:

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

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

    总结

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

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

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

    【讨论】:

    • 好建议,但似乎不是我面临的问题。
    猜你喜欢
    • 2010-12-18
    • 2020-11-16
    • 2019-10-26
    • 2017-08-03
    • 2011-05-07
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多