You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS Express配置:跨域使用Windows身份认证是否可行?

跨域Windows身份验证在IIS Express上的配置方案

核心结论

可以配置IIS Express让加入域B.A的计算机使用域C.B.A进行Windows身份验证,且正确配置后能够解决当前的认证失效问题。注意:该配置无法通过web.config完成,必须修改IIS Express的核心配置文件。

具体配置步骤

  1. 定位IIS Express的配置文件
    找到项目对应的applicationhost.config文件:

    • 全局配置:%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
    • 项目专属配置(优先使用):项目根目录下的隐藏文件夹.vs\config\applicationhost.config
  2. 修改Windows身份验证配置
    在配置文件中找到对应项目的<location path="你的项目名称">节点,调整<system.webServer>下的<security>配置:

    <location path="你的项目名称">
      <system.webServer>
        <security>
          <authentication>
            <!-- 禁用匿名访问 -->
            <anonymousAuthentication enabled="false" />
            <!-- 启用Windows身份验证,并指定认证提供者 -->
            <windowsAuthentication enabled="true">
              <providers>
                <add value="NTLM" />
                <add value="Negotiate" />
              </providers>
              <!-- 关闭扩展保护,避免跨域认证被拦截 -->
              <extendedProtection tokenChecking="None" />
            </windowsAuthentication>
          </authentication>
        </security>
      </system.webServer>
    </location>
    

    优先配置NTLM是因为跨域场景下Kerberos认证依赖域信任和SPN配置,NTLM的兼容性更强。

  3. 确保域信任与网络连通性

    • 确认域B.A与C.B.A之间存在单向信任关系(B.A信任C.B.A),或者两台域控制器之间能够正常通信。
    • 如果没有域信任,用户访问时需要手动输入C.B.A\用户名格式的凭据,且目标机器能解析C.B.A域控制器的地址。

补充项目配置验证

确保项目的web.config中已正确启用Windows身份验证:

<system.web>
  <authentication mode="Windows" />
  <authorization>
    <deny users="?" /> <!-- 拒绝匿名访问 -->
  </authorization>
</system.web>

配置生效验证

完成配置后,重启IIS Express(关闭VS后重新打开项目),访问项目时输入C.B.A域的用户凭据,即可在WindowsPrincipal中获取到该用户所属的C.B.A本地组信息,认证功能恢复正常。

内容的提问来源于stack exchange,提问作者Xander Stoffels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:10:55