我正在尝试使用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 令牌的任何评论?