Windows 身份验证在 IISExpress 中有效,但在 IIS 中无效

2024-05-10

我有一个奇怪的问题。我正在 Visual Studio 2013 中使用最新的 MVC5。我正在尝试创建一个托管匿名 API 的站点以及一个需要通过 Windows 身份验证的 Intranet 域凭据的管理仪表板。当通过 IIS Express 运行时一切正常,就像我期望的那样,但在真正的 IIS 中托管时则不然。

当托管在真正的 IIS 中时,它会为我提供一个登录框,就像我期望的管理部分一样,但它不会接受我的登录并不断提示我。我知道这肯定是正确的用户名和密码。知道为什么会发生这种情况吗?

我在 Windows 功能中安装了 Windows 身份验证,并在 IIS 中为该站点打开了 Windows 身份验证。

下面是我的设置..

[Authorize]
public class DashboardController : Controller

<add key="EnableSimpleMembership" value="false" />

<authentication mode="Windows"/>
<authorization>
   <allow users="?" />
</authorization>
</system.web>
  <location path="gsapi">
    <system.webServer>
      <security>
        <authentication>
          <anonymousAuthentication enabled="true"/>
          <windowsAuthentication enabled="true"/>
        </authentication>
      </security>
    </system.webServer>
  </location>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

有一个安全功能尝试拦截服务器上的反射攻击。这些攻击基本上是“中间人”攻击,其中攻击者对试图进行身份验证的两个参与系统执行质询-响应协议。

当您的服务器使用映射到环回地址的主机名时,试图保护您免受这些攻击的安全功能无法区分合法请求和欺诈请求。症状是所有挑战响应尝试都会失败。

您的选择是在注册表中指定主机名或禁用环回检查(不推荐)。

评论中链接的知识库文章提供了有关如何更改来解决此问题的具体说明:http://support.microsoft.com/kb/896861 http://support.microsoft.com/kb/896861

-- 编辑 2022 年 8 月 31 日 --

原来的 MSKB URL 目前已经过期,但幸运的是,在此之前它已被存档:

https://web.archive.org/web/20140212102642/http://support.microsoft.com/kb/896861 https://web.archive.org/web/20140212102642/http://support.microsoft.com/kb/896861

上面写着:


当您浏览使用集成身份验证并托管在 IIS 5.1 或更高版本上的网站时,您会收到错误 401.1

有两种方法可以解决此问题,请根据您的具体情况使用以下方法之一。

方法一: 指定主机名(如果需要 NTLM 身份验证,则为首选方法)

要指定映射到环回地址并可以连接到计算机上的网站的主机名,请按照下列步骤操作:

  1. Set the DisableStrictNameChecking注册表项为 1。

    • For more information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

      281308 https://web.archive.org/web/20130219023118/http://support.microsoft.com/kb/281308连接到基于 Windows 2000 的计算机或基于 Windows Server 2003 的计算机上的 SMB 共享可能无法使用别名

  2. Click Start, click Run, type regedit,然后单击OK.

  3. 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0

  4. 右键点击MSV1_0, 指向New,然后单击多字符串值.

  5. Type BackConnectionHostNames,然后按 ENTER 键。

  6. 右键点击BackConnectionHostNames,然后单击Modify.

  7. In the 价值数据框中,键入主机名或本地计算机上站点的主机名,然后单击OK.

  8. 退出注册表编辑器,然后重新启动 IISAdmin 服务。

方法二: 禁用环回检查(不太推荐的方法)

第二种方法是通过设置禁用环回检查DisableLoopbackCheck注册表项。

要设置DisableLoopbackCheck注册表项,请按照下列步骤操作:

  1. Set the DisableStrictNameChecking注册表项为 1。

    • For more information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

      281308 https://web.archive.org/web/20130219023118/http://support.microsoft.com/kb/281308连接到基于 Windows 2000 的计算机或基于 Windows Server 2003 的计算机上的 SMB 共享可能无法使用别名

  2. Click Start, click Run, type regedit,然后单击OK.

  3. 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  4. 右键点击Lsa, 指向New,然后单击双字值.

  5. Type DisableLoopbackCheck,然后按 ENTER 键。

  6. 右键点击DisableLoopbackCheck,然后单击Modify.

  7. In the 价值数据框、类型1,然后单击OK.

  8. 退出注册表编辑器,然后重新启动计算机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 身份验证在 IISExpress 中有效,但在 IIS 中无效 的相关文章

  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 如何直接在 Razor 中从 ASP.NET Identity 获取 UserId() 方法

    我的某些部分的自定义授权存在此问题Views 我不想穿上PartialView 而不是我使用If声明如下 if item CurrentComment Id Guid Parse ViewBag UserId repository IsUs
  • 纠正我在 mvc 中的 url 路由

    在我的 global asax 文件中 我有一个注册路由 routes MapRoute Default Route name controller action id URL with parameters new controller
  • 有没有办法让 ValidationSummary 与客户端验证器一起使用?

    NET ValidationSummary 控件聚合来自回发时触发的验证器的错误消息 有没有某种方法可以让它也显示来自客户端验证器的错误消息 我正在解决的问题是 在长页面上 可能会单击提交按钮 导致某些客户端验证器失败 但永远不会看到错误消
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • 在类库项目中使用资源.resx文件

    我在类库项目中使用了资源文件 resx 文件来存储一些错误消息 当我将 resx 文件的 构建操作 设置为 嵌入资源 并部署时 它工作正常 但我想将资源文件与dll分开 因为将来我可能需要更改resx文件中的错误消息 而无需重新编译类库项目
  • 如何强制控制器/操作使用 JsonValueProvider

    再会 我正在使用 ASP NET MVC 3 其中JsonValueProvider http haacked com archive 2010 04 15 sending json to an asp net mvc action met
  • 如何以编程方式设置单元格颜色 epplus?

    我想知道是否可以使用 epplus 以编程方式设置单元格颜色 我从 sql 存储过程加载数据并且运行良好 但我的用户想要 包含 年假 一词的单元格的背景颜色为浅黄色 而不是默认的白色 有没有办法做到这一点 也许通过迭代数据表 下面是哪里 p
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 为多语言 ASP.NET WebAPI 应用程序设置 CurrentCulture 的最佳位置

    基于这个问题 为多语言 ASP NET MVC Web 应用程序设置 CurrentCulture 的最佳位置 https stackoverflow com questions 8226514 best place to set curr
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明
  • ASP.NET MVC 路由如何工作?

    我定义了以下路线 public static void RegisterRoutes RouteCollection routes routes IgnoreRoute resource axd pathInfo routes MapRou
  • 向客户报告模型状态和应用程序错误的推荐方法是什么?

    我想知道向浏览器报告将显示给用户的应用程序或模型状态错误的最佳实践是什么 你能抛出一个异常并在jquery post的错误处理程序中处理它吗 例如 考虑这个方法 HandlerErrorWithAjaxFilter HttpPost pub
  • 无法将预编译、合并的 webapp 部署到 Azure

    我正在尝试将 ASP NET Web 应用程序部署到 Azure 它是 Web 表单 MVC 和 WebAPI 的混合体 并且有大量的 aspx ascx 文件 因此它们确实需要预编译 否则每次部署都会使网站运行缓慢一段时间 我正在尝试通过
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • ASP.NET 验证控件和 Javascript 确认框

    我有一个使用 NET 服务器端输入验证控件的页面 此页面还有一个 javascript 确认框 在提交表单时会触发该确认框 当前 当选择 提交 按钮时 会出现 javascript 确认框 一旦确认 就会触发 ASP NET 服务器端验证控
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提

随机推荐

  • Pandas 时间序列数据索引从字符串到浮点[重复]

    这个问题在这里已经有答案了 有人知道如何将字符串输出转换为浮点数吗 我正在尝试创建单独的数据框 Month and day of the week 基于时间戳索引 这df index strftime输出一个字符串 但我需要一个float基
  • 在 JerseyTest 中访问 Spring beans

    我试图弄清楚如何从 JerseyTest 的子类访问 Spring bean 扩展 JerseyTest 我已经设法在测试中加载 Spring 上下文 但我还没有弄清楚如何访问 spring 上下文 我的设置如下所示 public abst
  • 只读模式下不允许写操作(FlushMode.MANUAL)

    我对Spring真的很陌生 我正在使用 JSF Hibernate Spring 开发一个简单的 JEE 应用程序 我在尝试更新 DAO 上的值时遇到一些问题 我确信问题与 Spring 配置 xml 文件有关 但我无法找出是什么 这是我的
  • fprintf 调试断言失败

    我有一个程序 如果我手动启动它 它可以正确运行 但是 如果我尝试添加注册表项以在启动过程中自动启动它 则会收到以下错误 Debug assertion failed str null fprintf c line 55 我尝试在发生任何事情
  • 将 Angular Material 与 Twitter Bootstrap 相结合,不会发生冲突

    我想将 Twitter Bootstrap 与 Angular 材料结合起来 我发现引导材料设计https github com FezVrasta bootstrap material design https github com Fe
  • PyMC:马尔可夫系统中的参数估计

    简单的马尔可夫链 假设我们想要估计系统的参数 以便我们可以在给定时间步 t 的状态的情况下预测系统在时间步 t 1 的状态 PyMC 应该能够轻松处理这个问题 让我们的玩具系统由一维世界中的移动物体组成 状态是对象的位置 我们想要估计潜在变
  • 为 JpaTransactionManager 启用日志记录

    我在 spring 3 5 容器内使用 JpaTransactionManager 和 hibernate 3 我无法启用 JPA 日志记录 我希望查看事务管理日志以调试我的某些服务 我正在使用 log4j 这是我的 log4j prope
  • JWT Web 令牌加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature

    用于基于令牌的身份验证Microsoft IdentityModel Tokens提供了可用于创建的安全算法列表SigningCredentials string secretKey MySuperSecretKey byte keybyt
  • 在同一进程中多次运行Scrapy

    我有一个网址列表 我想抓取其中的每一个 请注意 将此数组添加为start urls不是我正在寻找的行为 我希望它在单独的爬网会话中一一运行 我想在同一个进程中多次运行Scrapy 我想将 Scrapy 作为脚本运行 如常见做法 https
  • 通过Java开始SMS编程需要哪些资源? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用循环构建 json 对象?

    我正在尝试循环遍历多个项目 并创建一个 json 对象 每个循环都应该是对象上的一个新项目 但我在执行此操作时遇到了一些问题 似乎只添加了一组项目 而不是多个项目 这是我的代码 jsonObj rows each function inde
  • 使用cmd打开包含多个空格的文件时出现问题

    我使用 java 调用下面的命令 这是java初始化 String fileName C temp A a txt String sCmd cmd c start fileName 这是我打印 sCmd 时得到的结果 cmd c start
  • 使用另一个对象数组过滤对象数组

    这个问题与这个问题类似Jquery 过滤带循环的对象数组 https stackoverflow com questions 30998424 jquery filter array of object with loop但这次我需要使用对
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • powershell 优雅/干净地关闭 Internet Explorer

    我想干净 优雅地关闭互联网浏览器 taskkill 会关闭它 但是当重新打开它时 它会询问您是否要重新打开上一个会话 尝试 CloseMainWindow 方法 通过向其主窗口发送关闭消息来关闭具有用户界面的进程 Get Process i
  • pyqtgraph ImageView 在多线程时冻结

    我有多个通过 WiFi 无线连接的摄像头 我正在尝试将数据流式传输到客户端 客户端在 GUI 上显示流 我的问题是 pyqtgraph ImageItems 似乎在大约 30 秒后停止重新绘制 或者如果我单击窗口外 或者如果我调整其中一张图
  • 将国际象棋引擎连接到用 Javascript 制作的现有 GUI

    我编写了自己的用于下棋和教授国际象棋的 GUI GUI 是使用 HTML 编写的 用于外观 使用 JavaScript 来实现各个部件的行为 目前该程序不遵循任何国际象棋规则 正确遵循国际象棋规则取决于用户 这允许自由地设置非法位置或多次移
  • Python中的元素排列

    数组 data 的每个元素都必须更改如下 例如 4 应该可以在names A 和data A 中看到 4 的名字 A 是 David 现在 David 应该出现在names B 和data B 中 David 的 data B 是 30 所
  • 带有子 div 的 div 的背景颜色

    div div This is a text inside a div element div div We are still in the div element div div Why isnt the background colo
  • Windows 身份验证在 IISExpress 中有效,但在 IIS 中无效

    我有一个奇怪的问题 我正在 Visual Studio 2013 中使用最新的 MVC5 我正在尝试创建一个托管匿名 API 的站点以及一个需要通过 Windows 身份验证的 Intranet 域凭据的管理仪表板 当通过 IIS Expr