Windows 身份验证不适用于带有 ASP.NET Core 的 IIS

2023-12-06

我正在尝试对 ASP.NET Core MVC 应用程序使用 Windows 身份验证。 以下是问题陈述。

当应用程序使用 IISExpress 运行时,它运行没有任何问题。但是,当它在 IIS 中配置为站点并运行时,它会提示输入凭据,甚至在输入更正的凭据后,应用程序也会显示状态为 401 的错误页面。

细节: 应用程序是一个启用了 Windows 身份验证的普通样板 ASP.NET Core MVC 应用程序。我正在尝试寻找在实际应用中使用的解决方案。

框架:.NET Core 2.2

环境:具有 IIS 10.0 的 Windows Server 2019 计算机上的 Visual Studio 2019

以下是我在样板应用程序中所做的更改。 更改 Startup.cs 文件以使用身份验证。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.Configure<IISOptions>(options =>
        {
            options.AutomaticAuthentication = true;
        });

        services.AddAuthentication(IISDefaults.AuthenticationScheme);

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

添加了以下代码行ConfigureStartup.cs 文件中的方法。

app.UseAuthentication();

在项目属性中启用 Windows 身份验证进行调试,并使用 OutProcess 托管模型配置 IIS 托管。

[Screen capture of Web project properties]

将应用程序配置为 IIS 中的网站,并启用 Windows 身份验证。

[Screen capture of IIS]

我尝试过的事情。

  1. 尝试添加forwardWindowsAuthToken="true"在 web.config 文件中。
  2. Tried adding the site in Local Intranet sites in Internet options of browser. [Screen Capture of Local Intranet sites]
  3. 尝试使用UseIIS()在 WebHostBuilder 的 Program.cs 中。

来自我尝试过的 StackOverflow 问题的建议。

Asp.Net core MVC 应用程序 IIS 中的 Windows 身份验证

ASP.Net Core:保留Windows身份验证

Asp.Net Core Windows 身份验证在 IIS 中不起作用

如果我在 IIS 和应用程序上都启用了 Windows 身份验证,则应用程序在浏览时会提示输入凭据。即使输入当前凭据后,它也不会通过并重新提示。尝试 3 次后,应用程序显示带有 401 错误的错误页面。

我相信如果我的应用程序提示输入凭据,配置是正确的,但我无法理解为什么即使在提供正确的凭据后它也不接受用户登录。

注意:所有活动、开发、调试、托管等都发生在同一台 Windows 2019 服务器计算机上。该计算机也托管域控制器,并尝试使用有效域用户之一登录。

我现在完全一无所知,我尝试的任何事情最终都会导致同样的问题。 请随时询问是否需要更多详细信息。

编辑1 ----------------------------------------------------------

我在 IIS 上使用端口 8081 且未绑定名称配置站点时几乎没有成功。

enter image description here

这样,当我浏览 http://localhost:8081 时,它会毫无问题地登录当前用户。但是当我使用任何绑定名称配置它时,例如sample.localapp.com它开始提示输入凭据,但从不接受它。

提前致谢。


我在 Windows 10 上遇到了同样的问题。解决方案在对所描述问题的第一条评论中有详细说明here

  1. 打开注册表编辑器
  2. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. 右键单击 MSV1_0 并创建一个名为 BackConnectionHostNames 的新多字符串值
  4. 双击 BackConnectionHostNames 并输入本地站点的 DNS 名称。
  5. 重新启动计算机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 身份验证不适用于带有 ASP.NET Core 的 IIS 的相关文章

  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐