Уровень олицетворения Kerberos «олицетворение» вместо «делегирование» - PullRequest
1 голос
/ 20 мая 2019

Ситуация

У меня есть .NET Core CLI 2.2.или клиент предварительного просмотра 3.0, который отправляет запрос REST на сервер, защищенный с помощью Kerberos.Уровень олицетворения должен быть «делегирование», но достигается только «олицетворение».

Проблема

Не удается достичь уровня делегирование с клиентом ядра .net от 2.1 и выше .Работает на 2.0 .

var handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;

HttpClient httpClient = new HttpClient(handler) { BaseAddress = new Uri(baseUri) };
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var response = await httpClient.GetAsync("");

var json = await response.Content.ReadAsStringAsync();

1 Ответ

0 голосов
/ 20 мая 2019

Есть несколько причин, по которым это может не сработать.

Во-первых, вызов RunImpersonated с использованием текущего токена пользователя немного избыточен.

Во-вторых, все зависит от того, настроили ли вы ограниченное делегирование для учетных записей служб. Учетная запись службы, к которой запускается это приложение, требует разрешения на делегирование для любой службы, работающей за uri.

В-третьих, Windows не позволит вам получить права на сетевое олицетворение на машине без необходимых привилегий, в частности SeImpersonatePrivilege. Это предоставляется только SYSTEM. Обычное решение - запустить его как службу Windows (или позволить IIS позаботиться об этом).

...