我正在尝试对 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);
}
添加了以下代码行Configure
Startup.cs 文件中的方法。
app.UseAuthentication();
在项目属性中启用 Windows 身份验证进行调试,并使用 OutProcess 托管模型配置 IIS 托管。
将应用程序配置为 IIS 中的网站,并启用 Windows 身份验证。
我尝试过的事情。
- 尝试添加
forwardWindowsAuthToken="true"
在 web.config 文件中。
- Tried adding the site in Local Intranet sites in Internet options of browser.
- 尝试使用
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 且未绑定名称配置站点时几乎没有成功。
这样,当我浏览 http://localhost:8081 时,它会毫无问题地登录当前用户。但是当我使用任何绑定名称配置它时,例如sample.localapp.com
它开始提示输入凭据,但从不接受它。
提前致谢。