我们有一个网站,我们正在开发使用ASP.NET核心5.0,我们希望允许员工和客户访问。
员工在具有Active Directory帐户的域上,而客户端不在。
我们希望允许员工使用Windows Active Directory身份验证自动登录,但将客户端定向到登录页面,以根据我们的数据库验证他们的用户名和密码。
我们有这两件事都在工作,即如果我们只为站点工作人员打开Windows身份验证就可以自动登录。如果我们只启用匿名身份验证,就会有一个登录页面,所有用户都可以使用用户名和密码登录。
问题是,如果同时启用Windows身份验证和匿名身份验证,则可以使用调用
context.ChallengeAsync(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);要尝试使用Active Directory进行登录,此方法运行良好,并以静默方式登录使用Active Directory的员工,但对于客户端(即公共用户),这将显示浏览器登录提示,要求提供域用户名密码

我们根本不想让客户看到这一点,而是将他们重定向到我们的登录页面。
如果可以,我们如何调用ChallengeAsync进行Active Directory登录,但如果不能,则不显示登录提示,而只是重定向到登录页面?
发布于 2021-11-02 04:46:37
This article展示了如何设置ASP.NET核心MVC应用程序来支持可以使用本地登录帐户登录的用户、特定于解决方案的用户,或者使用windows身份验证登录的用户。然后,从windows认证创建的身份可以被允许执行不同的任务,例如管理,或者来自本地认证的用户可以用于访客帐户等。为此,使用IdentityServer4来处理认证。ASP.NET核心MVC应用程序使用OpenID连接混合流。
注意:运行时需要允许IISExpress证书。
{
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "https://localhost:44364/",
"sslPort": 44364
}
},https://stackoverflow.com/questions/69804422
复制相似问题