c# - 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 托管。
在 IIS 中将应用程序配置为启用了 Windows 身份验证的网站。
我尝试过的事情。
- 尝试添加
forwardWindowsAuthToken="true"
web.config 文件。 - 尝试在浏览器的 Internet 选项中将站点添加到本地 Intranet 站点中。
- 尝试
UseIIS()
在 Program.cs 中使用 WebHostBuilder。
我试过的 StackOverflow 问题的建议。
IIS 中的 Asp.Net 核心 MVC 应用程序 Windows 身份验证
Asp.Net Core Windows 身份验证在 IIS 中不起作用
如果我在 IIS 和应用程序上都启用了 Windows 身份验证,则应用程序在浏览时会提示输入凭据。即使在输入当前凭据后,它也不会通过并重新提示。尝试 3 次后,应用程序显示带有 401 错误的错误页面。
如果我的应用程序提示输入凭据,我相信配置是正确的,但我无法理解为什么即使在提供更正的凭据后它也不接受用户登录。
注意:所有活动、开发、调试、托管等都发生在同一台 Windows 2019 服务器机器上。并且该机器也托管域控制器,并且尝试使用有效域用户之一登录。
我现在完全一无所知,我尝试的任何事情最终都会导致同样的问题。随时询问是否需要更多详细信息。
编辑 1 ----------------------------------------------
在 IIS 上使用端口 8081 配置我的站点并且没有绑定名称时,我几乎没有成功。
这样,当我浏览 http://localhost:8081 时,它会毫无问题地登录当前用户。但是当我使用任何绑定名称配置它时,例如sample.localapp.com
它开始提示输入凭据但从不接受它。
提前致谢。
解决方案
您好朋友,我知道您在问题中提出了答案,但我尝试详细说明:
删除c:\windows\system32\drivers\etc\host
文件中的绑定名称,然后在IIS
管理器中转到您的网站,右键单击它并选择 Edit Bindings... 选项,编辑绑定网站,清除 Host Name: 字段,您现在可以在浏览器 url 中写入http://servername:port/
推荐阅读
- amazon-web-services - 使用自定义 DHCP 选项集查询 Route53 私有托管区域
- mongodb - mongodb聚合如果条件 - 如果为真则执行过滤器
- javascript - 纯 JS 仅将类添加到重复元素之一
- java - 如何将文件读入 Arraylist 并在 Java 中打印 ArrayList
- excel - 对除一张以外的所有工作表运行的 Excel 宏
- javascript - 如何使用firebase过滤UTC日期
- python - 如何解决 Plone 中依赖项之间的冲突?
- visualization - 您如何以一种方式表示响应时间和每秒请求数?
- reference - 问:NetSuite 电子商务 - 源自定义实体字段以参考结帐
- python - 如何在数据框中的列的单元格中取消嵌套 2x2 数组?