首页 > 解决方案 > Windows 身份验证不适用于带有 ASP.NET Core 的 IIS

问题描述

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

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

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

框架:.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);
}

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

app.UseAuthentication();

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

[Web 项目属性的屏幕截图]

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

[IIS 的屏幕截图]

我尝试过的事情。

  1. 尝试添加forwardWindowsAuthToken="true"web.config 文件。
  2. 尝试在浏览器的 Internet 选项中将站点添加到本地 Intranet 站点中。 [本地 Intranet 站点的屏幕截图]
  3. 尝试UseIIS()在 Program.cs 中使用 WebHostBuilder。

我试过的 StackOverflow 问题的建议。

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

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

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

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

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

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

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

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

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

在此处输入图像描述

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

提前致谢。

标签: c#asp.net-mvcasp.net-corewindows-authenticationiis-10

解决方案


您好朋友,我知道您在问题中提出了答案,但我尝试详细说明:

删除c:\windows\system32\drivers\etc\host文件中的绑定名称,然后在IIS管理器中转到您的网站,右键单击它并选择 Edit Bindings... 选项,编辑绑定网站,清除 Host Name: 字段,您现在可以在浏览器 url 中写入http://servername:port/


推荐阅读