MIT Kerberosを認証に使用するWindowsアプリケーションでは苦労しています。私たちはこのチケットを使用しようとすると、しかしMIT KerberosがMSLSAキャッシュでTGTの検索に失敗する
#1> Client: jalf @ TESTREALM.COM
Server: krbtgt/TESTREALM.COM @ TESTREALM.COM
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
Ticket Flags 0x40e00000 -> forwardable renewable initial pre_authent
Start Time: 1/12/2012 9:46:27 (local)
End Time: 1/12/2012 19:46:27 (local)
Renew Time: 1/19/2012 9:46:27 (local)
Session Key Type: RSADSI RC4-HMAC(NT)
:ユーザーがklist
が、彼はこの1つを含む、ADから期待されるチケットを取得することを示し、ドメインユーザーアカウントでWindowsにログオンした場合
私たちのアプリケーションでは、Kerberosライブラリはそれを見つけられないようです。
は、ここで関連するコードの簡易版です。
// Open the MSLSA cache
krb5_cc_resolve(kcontext, "MSLSA:", &mslsa_ccache);
// Create a cursor for traversing the cache
krb5_cc_start_seq_get(kcontext, mslsa_ccache, &cursor);
// Check all the credentials in the cache
while (!(code = krb5_cc_next_cred(kcontext, mslsa_ccache, &cursor, &creds))) {
// Find the one with the INITIAL flag set
if (creds.ticket_flags & TKT_FLG_INITIAL) {
// ticket found
krb5_free_cred_contents(kcontext, &creds);
break;
}
krb5_free_cred_contents(kcontext, &creds);
}
krb5_cc_end_seq_get(kcontext, mslsa_ccache, &cursor);
しかし、何らかの理由で、私たちは// ticket found
一部を入力することはありません。 デバッガでコードを実行すると、私はそれがklist
によって示される他のチケットのいくつか見つけたが、何らかの理由で、それは我々が興味を持っているものを見つけないことを参照してください。
誰もが、この動作を説明できますかどのようにすることができますそれを回避するには?純粋に、私はklist
からの出力がkrb5_cc_next_cred
でキャッシュ上の反復の結果と一致することを期待しています。
私はケルベロスに比較的新しく、このコードを同僚の同僚から継承しました。そのため、重要な基本情報が欠落している可能性があります。
+1、ありがとう、非常に役に立ちます。それは問題のようです。私はそれを月曜日にもう少し試してみる必要があります。そして、すべてがうまくいくなら、私は答えを受け入れます。 :) – jalf
ハックで動作しましたか? –
そうです。まだまだ不安定ですが、それは別の問題と思われます。Windowsアカウントにログインすると、LSAキャッシュにチケットが表示されないことがあります。 – jalf