是否有执行WindowsImpersonationContext的.net核心2.2方法?

时间:2018-12-26 22:25:21

标签: asp.net-core .net-core asp.net-core-mvc impersonation asp.net-core-2.1

这不起作用private static WindowsImpersonationContext impersonationContext;

我需要能够做到这一点

tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);

impersonationContext = tempWindowsIdentity.Impersonate();

然后这个

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

我正在查看以下问题/答案:WindowsImpersonationContext & Impersonate() not found in ASP.Core

但这似乎不是一个很好的匹配,对吗?

1 个答案:

答案 0 :(得分:1)

ASP.NET Core没有实现模拟。应用程序使用应用程序池或进程标识以所有请求的应用程序标识运行。如果需要代表用户明确执行操作,请使用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