获取Kerberos服务令牌时遇到问题

muk*_*uku 5 c# authentication kerberos

我正在尝试使用以下代码获取Kerberos票证:

public static byte[] GetToken(string username, string password, string domain)
{
    using (var domainContext = new PrincipalContext(ContextType.Domain, domain))
    {
        string spn = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, username).UserPrincipalName;
        var provider = new KerberosSecurityTokenProvider(spn, TokenImpersonationLevel.Impersonation, new NetworkCredential(username, password, domain));
        var token = provider.GetToken(TimeSpan.FromMinutes(1)) as KerberosRequestorSecurityToken;
        return token.GetRequest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是provider.GetToken()方法引发SecurityTokenValidationException,并显示消息“提供的NetworkCredentials无法创建Kerberos凭据,有关详细信息,请参见内部异常”。内部异常显示为“不支持对在需要Kerberos多分支的用户帐户下运行的服务进行身份验证”。有什么想法吗?

我从此线程获得了代码,看来在这种情况下它起作用了:如何使用SSPI从Kerberos获取服务令牌