Kerberos模拟级别“模拟”而不是“委托”

时间:2019-05-20 09:27:17

标签: c# .net-core kerberos-delegation

情况

我有一个.NET Core CLI 2.2。或3.0 Preview5客户端,它将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 :(得分:0)

有很多原因可能会导致失败。

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

第二,这全部取决于您是否为服务帐户配置了约束委派。此应用程序正在运行的服务帐户需要获得对uri之后运行的任何服务的委派权限。

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