我有一个.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();
答案 0 :(得分:0)
有很多原因可能会导致失败。
首先,使用当前用户令牌调用RunImpersonated
有点多余。
第二,这全部取决于您是否为服务帐户配置了约束委派。此应用程序正在运行的服务帐户需要获得对uri
之后运行的任何服务的委派权限。
第三,Windows将不允许您在没有权限的机器上(特别是SeImpersonatePrivilege
)在计算机上获得网络模拟权限。这仅由SYSTEM
授予。通常的解决方案是将其作为Windows服务运行(或让IIS处理)。