1

情况

我有一个 .NET Core CLI 2.2。或 3.0 preview5 客户端,将 REST 请求发送到服务器,使用 Kerberos 进行保护。模拟级别应该是“委托”,但只能实现“模拟”。

问题

我无法使用2.1 及更高版本的 .net 核心客户端实现委派级别。它适用于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();

4

1 回答 1

0

这可能会失败的原因有很多。

首先,RunImpersonated使用当前用户令牌调用有点多余。

其次,这一切都取决于您是否为服务帐户配置了约束委派。此应用程序运行的服务帐户需要对后面运行的任何服务的委派权限uri

第三,Windows 不会让您在没有正确权限的机器上获得网络模拟权限——特别是SeImpersonatePrivilege. 这仅由 授予SYSTEM。通常的解决方案是将其作为 Windows 服务运行(或让 IIS 处理它)。

于 2019-05-20T15:55:49.943 回答