在支持的平台上,您可以让IdentityServer使用Windows身份验证(例如,对Active Directory)对用户进行身份验证。 当您使用以下身份托管IdentityServer时,当前Windows身份验证可用:
- 使用Kestrel在使用IIS和IIS集成包的Windows上
- 使用HTTP.sys服务器在Windows上
在这两种情况下,通过使用方案“Windows”在HttpContext
上使用ChallengeAsync
API来触发Windows身份验证。 我们的快速启动用户界面中的帐户控制器实现了必要的逻辑。
使用Kestrel
当使用Kestrel,你必须运行“后面”的IIS和IIS integration:
代码语言:javascript复制var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://localhost:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
在使用WebHost.CreateDefaultBuilder
方法设置WebHostBuilder
时,Kestrel会自动配置。
此外,IIS(或IIS Express)中的虚拟目录必须启用Windows和匿名身份验证。
IIS集成(IIS integration)层将配置一个Windows身份验证处理程序到DI,可以通过身份验证服务调用。 通常在IdentityServer中,建议禁用此自动行为。 这在ConfigureServices中完成:
services.Configure(iis => { iis.AuthenticationDisplayName = "Windows"; iis.AutomaticAuthentication = false; });