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.WindowsIdentity
的5.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 时不支持操作