5

我正在尝试使用KerberosSecurityTokenProvider. 不幸的是,有关其使用的文档非常有限,而且我没有取得太大的成功。我编写了以下示例测试应用程序:

var oProvider = new KerberosSecurityTokenProvider("MACHINENAME",TokenImpersonationLevel.Identification);
var oToken = (KerberosRequestorSecurityToken)oProvider.GetToken(TimeSpan.FromHours(1));

Console.WriteLine(oToken.ValidFrom);
Console.WriteLine(oToken.ValidTo);
Console.WriteLine(oToken.Id);

var abRequest = oToken.GetRequest();
var sId = oToken.Id;

try
{
    var oReceivedToken = new KerberosReceiverSecurityToken(abRequest, sId);
    var oAuthenticator = new KerberosSecurityTokenAuthenticator();

    var oCol = oAuthenticator.ValidateToken(oReceivedToken);
    foreach (var o in oCol)
    {
        Console.WriteLine(o.Id);
    }
}
catch(Exception e)
{
    Console.WriteLine(e);
}

MACHINENAME我的机器的名字在哪里。它成功获得了一个 Kerberos 令牌,但是当我尝试验证它时,我得到:

System.IdentityModel.Tokens.SecurityTokenException: The AcceptSecurityContext failed. ---> System.ComponentModel.Win32Exception: The logon attempt failed 

这给我留下了许多问题:

  • 这是在 C# 中获取/验证 Kerberos 令牌的正确方法吗?
  • 如果我只是说我想使用令牌进行识别,为什么它会尝试执行登录?
  • 错误是由于我的代码造成的,还是还需要解决域配置问题?

有关如何在 .NET 中使用您自己的 Kerberos 令牌的任何评论?

4

0 回答 0