在C#我需要以Spngeo格式生成Kerberos令牌,这样我就可以将其发送到授权标题中,以协商到我的IIS服务器,在此我启用了Windows身份验证。 我正在使用此主题中的代码
如何使用sspi从kerberos获取服务令牌 它正在生成Kerberos代币,但它不采用Spnego格式,因此在我使用时不起作用。 我想获得与使用kerberos.net库生成的相同令牌。他们的代币对我有用,但是问题是我需要使用凭据来生成,而我不想要它,所以我不能使用此库。我想使用DefaultCredentials,但要获得与Kerberos.net库的使用相同的令牌。 我还试图直接使用SSPI并将包装进行协商,这应该给我Spnego格式,但是生成的令牌与Kerberos.net库不同,因此它也无法正常工作。 我怎么能解决这个问题?或者,我的IIS上是否有任何配置,它也会接受不采用Spengo格式的令牌? 请帮助
这样的外观是您需要的:
using System.Net;
using System.Net.Security;
var authClientOptions = new NegotiateAuthenticationClientOptions
{
Package = "Negotiate",
TargetName = $"HTTP/{hostFqdn}",
RequiredProtectionLevel = ProtectionLevel.Sign,
Credential = CredentialCache.DefaultNetworkCredentials,
};
using var authContext = new NegotiateAuthentication(authClientOptions);
var challengeResponse = authContext.GetOutgoingBlob("", out var statusCode);
Console.WriteLine(challengeResponse);
curl <url> -s -v -o nul -H "Authorization: Negotiation <token>"
.NET8,Windows Server 2016和2012R2。效果很好 .NET框架中也可以使用,但更复杂。