Есть ли .net core 2.2 способ сделать WindowsImpersonationContext? - PullRequest
0 голосов
/ 27 декабря 2018

Это не работает private static WindowsImpersonationContext impersonationContext;

Мне нужно, чтобы быть в состоянии сделать это

tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);

impersonationContext = tempWindowsIdentity.Impersonate();

А потом это

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

Я смотрел наэтот вопрос / ответ: WindowsImpersonationContext & Impersonate () не найден в ASP.Core

Однако это не кажется хорошим совпадением, не так ли?

1 Ответ

0 голосов
/ 27 декабря 2018

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);
    });

Подробнее можно прочитать @ Настройка проверки подлинности Windows в ASP.NET Core

...