是否有 .net core 2.2 方法来执行 WindowsImpersonationContext?

Is there a .net core 2.2 way of doing WindowsImpersonationContext?

这不起作用private static WindowsImpersonationContext impersonationContext;

我需要能够做到这一点

tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);

impersonationContext = tempWindowsIdentity.Impersonate();

然后这个

if (impersonationContext != null)
{
    impersonationContext.Undo();
    impersonationContext = null;
}

我在看这个question/answer:WindowsImpersonationContext & Impersonate() not found in ASP.Core

然而,这似乎不是一个很好的匹配,是吗?

ASP.NET 核心不实现模拟。应用程序 运行 具有所有请求的应用程序标识,使用应用程序池或进程标识。如果您需要代表用户明确执行操作,请使用 WindowsIdentity.RunImpersonated.

WindowsIdentity.RunImpersonated(user.AccessToken, () =>
    {
        var impersonatedUser = WindowsIdentity.GetCurrent();
        var message =
            $"User: {impersonatedUser.Name}\tState: {impersonatedUser.ImpersonationLevel}";

        var bytes = Encoding.UTF8.GetBytes(message);
        context.Response.Body.Write(bytes, 0, bytes.Length);
    });

您可以进一步阅读@ Configure Windows Authentication in ASP.NET Core