无法获取Kerberos服务令牌

时间:2016-09-27 10:13:12

标签: 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();
    }
}

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

我从这个帖子中得到了我的代码,看起来它适用于这个人的案例:How to get Service Token from Kerberos using SSPI

0 个答案:

没有答案