ASP.NET Core 中的 Windows 身份验证模拟是不是已死?

Posted

技术标签:

【中文标题】ASP.NET Core 中的 Windows 身份验证模拟是不是已死?【英文标题】:Is Windows Authentication Impersonation dead in ASP.NET Core?ASP.NET Core 中的 Windows 身份验证模拟是否已死? 【发布时间】:2020-04-09 21:57:13 【问题描述】:

在试图找出为什么所有的模仿都不起作用时发现了这一点。

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.1&tabs=visual-studio#impersonation

ASP.NET Core 不实现模拟。

RunImpersonated 不支持异步操作并且不应该 用于复杂场景。例如,包装整个请求 或中间件链不受支持或推荐。

这听起来对我来说是不可行的。以最终用户身份查询数据库是否不再实用?

【问题讨论】:

【参考方案1】:

.NET 5 开始会有一个WindowsIdentity.RunImpersonatedAsync

现在,你必须坚持这个 (remarks from the 3.1 docs):

与 Impersonate 不同,此方法可以可靠地与 async/await 模式一起使用。在异步方法中,此方法可以与异步委托参数一起使用,以便可以等待生成的任务。

System.Security.Principal.WindowsIdentity5.0.NET Platform Extensions 是currently in preview2。 你可以在这里找到发布日期:Upcoming Ship Dates

【讨论】:

以上是关于ASP.NET Core 中的 Windows 身份验证模拟是不是已死?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 中的混合身份验证(Windows 和 AAD JwtBearer)

带有 Windows 身份验证的 ASP.Net Core 3.1 中的空闲超时

Windows + IIS 环境部署Asp.Net Core App

.NET 6 中将 ASP.NET Core 注册成 Windows Service

System.ServiceModel 错误在 ASP.NET Core API 中使用嵌入在 Windows 服务中的 WCF 时不支持操作

Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App