IIS Express Windows 身份验证

Posted

技术标签:

【中文标题】IIS Express Windows 身份验证【英文标题】:IIS Express Windows Authentication 【发布时间】:2011-06-13 08:22:32 【问题描述】:

我正在尝试将 IIS Express 与 VS2010 一起使用来托管 silverlight 应用程序。我修改了 applicationhost.config 文件以允许修改正确的配置设置。我的 web.config 中有以下内容:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

我没有通过身份验证,并且我的域服务调用作为用户返回空记录。安装 VS2010 SP1 BETA 后,我能够让它工作,但我试图让它只与 IIS Express 一起工作。

如何启用 Windows 身份验证以使用 IIS Express。是否有我缺少的配置设置?

【问题讨论】:

【参考方案1】:

选项-1

编辑\My Documents\IISExpress\config\applicationhost.config文件并启用windowsAuthentication,即:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

选项-2

解锁 \My Documents\IISExpress\config\applicationhost.config 中的 windowsAuthentication 部分,如下所示

<add name="WindowsAuthenticationModule" lockItem="false" />

将所需身份验证类型的覆盖设置更改为“允许”

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

在应用程序的 web.config 中添加以下内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

以下链接可能会有所帮助: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

安装 VS 2010 SP1 后,可能需要应用选项 1 + 2 才能使 Windows 身份验证正常工作。此外,您可能需要在 IIS Express applicationhost.config 中将匿名身份验证设置为 false:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

对于 VS2015,IIS Express 应用程序主机配置文件可能位于此处:

$(solutionDir)\.vs\config\applicationhost.config

项目文件中的&lt;UseGlobalApplicationHostFile&gt; 选项选择默认或特定于解决方案的配置文件。

【讨论】:

谢谢。但我确实尝试了上面的选项。但我仍然无法使用 Windows 身份验证。我想我只需要等待 VS2010 / SP1 来获得这个功能。 选项二对我有用。不过花了一段时间才找到这篇文章! 自从VS2010 sp1出来后,这个问题就不再适用了。我试图让它在不安装 sp1 的情况下工作。我的猜测是 sp1 正在做一些我无法弄清楚的第一次设置。我可以继续将此答案标记为正确,尽管实际上不是,因为未安装 sp1 是先决条件。 谢谢你! NTLM 通过禁用匿名身份验证来工作。 在 VS2015 中,IIS Express 配置移到了解决方案结构中,特别是 $(SolutionDir)\.vs\config\applicationhost.config 遗憾的是它没有考虑 MyDocuments\IISExpress 下的现有配置,所以任何自定义都需要读取。【参考方案2】:

根据 booij boy 的回答,检查您是否在 控制面板 -> 程序 -> 打开或关闭 Windows 功能 -> Internet 信息服务 -> 万维网服务 -> 安全

此外,使用 firefox 或 Internet Explorer 时似乎有很大的不同。 在启用“windows 身份验证”后,它对我有用,但仅在 IE 中。

【讨论】:

让它在 Firefox 中运行:markmonica.com/2007/11/20/… 这里是:web.archive.org/web/20080531061006/http://markmonica.com/2007/…【参考方案3】:

Visual Studio 2010 SP1 和 2012 增加了对 IIS Express 的支持,无需编辑尖括号。

    如果还没有,请右键单击 Web 风格的项目并选择“使用 IIS Express...”。 完成后,选择 Web 项目并按 F4 聚焦“属性”面板。 将“Windows 身份验证”属性设置为启用,将“匿名身份验证”属性设置为禁用。

我相信这个解决方案优于 vikomall 的选项。

选项 #1 是针对所有 IIS Express 站点的全局更改。 选项 #2 在 web.config 中留下了开发的麻烦。 此外,部署到 IIS 7.5 时可能会导致错误,除非您在 IIS 服务器的 applicationHost.config 上执行“解锁”过程。

上述基于 UI 的解决方案在 IIS Express 的 applicationHost.config 中使用特定于站点的位置元素,使应用程序保持不变。

更多信息在这里: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

【讨论】:

为了强调我错过的内容 - 属性上下文菜单和 Alt-Enter 快​​捷方式并不能完全取代允许您更改是否启用 Windows 身份验证的属性窗格详细信息。使用F4 或单击属性窗格以实际查看属性。 在重新开始这篇文章之前,我为这项任务苦苦挣扎了好几天:msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx 基本上,忽略原始帖子中的所有内容,从“处女”applicationhost.config 重新开始,然后启用设置按照这个答案。最后我获得了 Windows 身份验证!谢谢!! 它最终将 .csproj 中的 IISExpressWindowsAuthentication 设置从“启用”更改为禁用。 已禁用 这两个选项对我来说是灰色和禁用的。知道为什么吗? 这 2 个选项显示为灰色,因为您的 IIS Express 配置中有此选项
【参考方案4】:

除了这些出色的答案之外,在 IISExpress 开发环境的上下文中,为了阻止臭名昭著的“system.web/identity@impersonate”错误,您可以简单地确保在您的应用程序主机中进行以下设置.config 文件。

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

这将使您在开发和测试期间获得更大的灵活性,但请确保您了解在生产环境中使用此设置之前的含义。

有用的帖子:

http://forums.iis.net/post/1873372.aspx http://www.iis.net/learn/application-frameworks/building-and-running-aspnet-applications/aspnet-20-breaking-changes-on-iis

【讨论】:

完全是偶然发现的,但它起作用了:-)【参考方案5】:

在 IIS 管理器中单击您的站点。 您需要“在功能视图中”(而不是“内容视图”)

在“功能视图”的IIS部分中选择所谓的功能“身份验证” 然后双击它。 您可以在此处启用 Windows 身份验证。 这也是可能的(我认为在线程中的一个建议中)通过 web.config 中的设置(...)

但也许您有一个 web.config,您不想过多地浏览。 那么这个帖子不会有太多帮助,这就是我添加这个答案的原因。

【讨论】:

【参考方案6】:

如果出现以下情况,此答案可能会有所帮助:1) 您的网站在升级到 Visual Studio 2015 之前曾经使用 Windows 身份验证,并且 2) 并且您的网站正在尝试加载 /login.aspx(即使您的网站上没有此类文件) .

将以下两行添加到您网站的Web.configappSettings部分。

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

【讨论】:

【参考方案7】:

同上 - VS 2015,.vs\config\applicationhost.config 不可见或不可用。

默认情况下 .vs 文件夹是隐藏的(至少在我的情况下)。

如果找不到 .vs 文件夹,请按照以下步骤操作。

    右键单击解决方案文件夹 选择“属性” 在Attributes部分,点击Hidden复选框(默认未选中), 然后点击“应用”按钮 将显示确认窗口“将更改应用到此文件夹、子文件夹和文件”选项已选中,点击“确定”。 重复步骤 1 到 5,除了在 step 3 上,这一次您需要 uncheck 之前检查的“隐藏”选项。

现在应该可以看到 .vs 文件夹了。

【讨论】:

【参考方案8】:

在完成上述答案中的所有操作后,我发现我没有以管理员身份运行 Visual Studio。以管理员身份运行后,问题解决了。

【讨论】:

【参考方案9】:

如果没有任何答案有帮助,您可能需要调整项目属性。查看其他 *** 答案以了解如何执行此操作:

https://***.com/a/20857049/56621

【讨论】:

【参考方案10】:

我正在使用 Visual Studio 2019 针对 ASP.Net 应用程序进行开发。以下是对我们有用的:

    打开您的项目属性窗口,禁用 匿名身份验证 并启用 Windows 身份验证system.web 下的 Web.Config

&lt;authentication mode="Windows"&gt;&lt;/authentication&gt;p

而且我没有更改 iis express 中的 application.config。

【讨论】:

以上是关于IIS Express Windows 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

IIS Express - 临时模拟经过身份验证的用户

在 VS2013 中调试时的身份验证问题 - iis express

IIS 节点和 Windows 身份验证:IIS 网站不断提示输入凭据

IIS Developer Express 上的 WCF 4 Rest 服务,身份验证问题

Asp.net 形成身份验证 cookie 不遵守 IIS7 的超时

IIS 7 - Windows 身份验证不起作用[关闭]