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
项目文件中的<UseGlobalApplicationHostFile>
选项选择默认或特定于解决方案的配置文件。
【讨论】:
谢谢。但我确实尝试了上面的选项。但我仍然无法使用 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 设置从“启用”更改为禁用。 除了这些出色的答案之外,在 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.config
的appSettings
部分。
<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
<authentication mode="Windows"></authentication>p
而且我没有更改 iis express 中的 application.config。
【讨论】:
以上是关于IIS Express Windows 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
在 VS2013 中调试时的身份验证问题 - iis express
IIS 节点和 Windows 身份验证:IIS 网站不断提示输入凭据
IIS Developer Express 上的 WCF 4 Rest 服务,身份验证问题