IIS Express Windows身份验证

Mar*_*ark 242 windows-authentication visual-studio-2010 visual-studio iis-express

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

我没有经过身份验证,我的域服务调用返回一个空记录作为用户.安装VS2010 SP1 BETA之后,我能够让这个工作正常,但我试图让它只与IIS Express一起使用.

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

ror*_*ods 399

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

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

在此输入图像描述

我相信这个解决方案优于vikomall的选择.

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

上面的基于UI的解决方案在IIS Express的applicationHost.config中使用特定于站点的位置元素,使应用程序不受影响.

更多信息请访问:http: //msdn.microsoft.com/en-us/magazine/hh288080.aspx

  • 这两个选项对我来说是灰色的并禁用.知道为什么吗? (7认同)
  • 为了强调我错过了什么 - 属性上下文菜单和`Alt-Enter`快捷方式不能完全取代允许您更改是否启用Windows身份验证的属性窗格详细信息.使用`F4`或单击属性窗格以实际查看属性. (5认同)

vik*_*all 272

选项-1:

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

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

选项-2:

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

<add name="WindowsAuthenticationModule" lockItem="false" />
Run Code Online (Sandbox Code Playgroud)

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

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>
Run Code Online (Sandbox Code Playgroud)

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

以下链接可能有所帮助: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="" />
Run Code Online (Sandbox Code Playgroud)

对于VS2015,IIS Express applicationhost配置文件可能位于此处:

$(solutionDir)\.vs\config\applicationhost.config
Run Code Online (Sandbox Code Playgroud)

并且<UseGlobalApplicationHostFile>项目文件中的选项选择默认或特定于解决方案的配置文件.

  • 在VS2015中,IIS Express配置进入了解决方案结构,特别是$(SolutionDir)\.vs\config\applicationhost.config,遗憾的是它不会将MyDocuments\IISExpress下的现有配置考虑在内,因此需要重新进行任何自定义. (4认同)
  • 选项二为我工作.花了一段时间才找到这篇文章! (3认同)

bee*_*s73 9

根据booij boy的答案,检查您是否选中了控制面板中的"Windows身份验证"功能 - >程序 - >打开或关闭 - > Internet信息服务 - >万维网服务 - >安全性的Windows功能

此外,使用firefox或Internet Explorer时似乎有很大的不同.在启用"Windows身份验证"之后,它对我有用,但仅限于IE.

  • 让它在firefox中运行:http://markmonica.com/2007/11/20/firefox-and-integrated-windows-authentication/ (2认同)

Chi*_*isu 5

除了这些出色的答案之外,在IISExpress开发环境的上下文中,为了阻止臭名昭着的"system.web/identity@impersonate"错误,您可以简单地确保applicationhost.config文件中存在以下设置: .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

有用的帖子: