C# Kerberos模拟级别';模仿';而不是';授权'; 处境
我有一个.NET Core CLI 2.2。或3.0 preview5客户端,它向服务器发送REST请求,并使用Kerberos进行保护。模拟级别应为“委派”,但仅实现“模拟” 问题 我无法从2.1及更高版本的.net核心客户机实现委托级别。它在2.0上工作C# Kerberos模拟级别';模仿';而不是';授权'; 处境,c#,.net-core,kerberos-delegation,C#,.net Core,Kerberos Delegation,我有一个.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(han
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();
这可能会失败的原因有很多 首先,使用当前用户令牌调用
RunImpersonated
,有点多余
其次,这完全取决于您是否为服务帐户配置了受约束的委派。此应用正在运行的服务帐户需要对运行在uri
后面的任何服务的委派权限
第三,Windows不允许您在没有权限的机器上获得网络模拟权限,特别是
SeImpersonatePrivilege
。这仅由系统授予。通常的解决方案是将其作为Windows服务运行(或者让IIS来处理)。这可能会失败的原因有很多
首先,使用当前用户令牌调用RunImpersonated
,有点多余
其次,这完全取决于您是否为服务帐户配置了受约束的委派。此应用正在运行的服务帐户需要对运行在uri
后面的任何服务的委派权限
第三,Windows不允许您在没有权限的机器上获得网络模拟权限,特别是SeImpersonatePrivilege
。这仅由系统授予。通常的解决方案是将其作为Windows服务运行(或者让IIS处理)。我删除了其他调用。问题的核心是,它适用于2.0,但不适用于2.1及更高版本。所以没有一个原因是原因。我删除了其他电话。问题的核心是,它适用于2.0,但不适用于2.1及更高版本。因此,所述原因中没有一个是原因。