5

を使用してC#で直接Kerberosトークンを使用しようとしてい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