を使用して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トークンを使用する方法についてコメントはありますか?