1

アプリケーション用に Kerberos 化されたログイン モジュールをプログラムしようとしていますが、いくつかの概念が不明です。

私はmod_auth_kerbApache HTTPサーバーからソースコードを読んでMIT Kerberos APIを学んでいます(より良い出発点が見つからず、オンラインでAPIチュートリアルやデモコードが見つかりませんでした)。それから、キータブファイルまたはユーザーが入力したパスワードのいずれかによって、最初の機密情報を取得する必要があることがわかりました。私を大いに混乱させているのは、OS にログインするときに既に持っているということです。プリンシパルのkinitチケットは までに持っていると確信しています。krbtgt/LOCALHOST@LOCALHOSTklistkrb5_get_init_cred_password/keytab

  • はいの場合、私の OS アカウントは Kerberos の有効なプリンシパルであり、TGS へのチケットを取得したので、最初の機密情報を再度取得する必要があるのはなぜですか? それは Kerberos のシングル サインオン機能に違反していませんか?
  • そうでない場合、コードでプリンシパルのチケットを取得するにはどうすれば krbtgt/LOCALHOST@LOCALHOSTよいでしょうか。たとえば、ログイン アカウントを対応する Kerberos プリンシパルに関連付けるにはどうすればよいでしょうか?

ところで、オンラインで入手できる優れた MIT Kerberos API チュートリアルはありますか? 公式の開発者向けマニュアルは完成していますが、そこから始めると、辞書から第二言語を学ぶような気分になります:)。

どうもありがとうございました。

4

1 に答える 1

4

2 つのことがあります。 1. kinit は、コード内で krb5_get_init_cred_pa​​ssword を使用して資格情報を取得するユーティリティ ツールです。2. 次に、kvno ユーティリティを使用して、kinit を使用して取得したチケットを使用し、サービス チケットを取得できます。元:

 kinit -f adminitrator@XYZ.COM

これにより、管理者用のチケットが取得されます。このチケットを何らかのサービスに使用する場合は、CIFS としましょう。

 kvno [-k <keytab file> | -c <credential cache>] -u <client> -P service

クレデンシャル キャッシュまたは ktutil ユーティリティを使用して作成できるキータブ ファイルのいずれかを使用できます。

第二に、コードからすべてを制御したい場合は、krb api と次のような関数を理解する必要があります。

krb5_get_init_creds_password

kerb_get_credentials

krb5_get_crendentials_for_user

krb5_get_crendentials_for_proxy など。

MIT kerberos ライブラリから kinit と kvno のソース コードを参照するだけで、これらの関数がどのように使用されているかなどをより理解できます。

アンクル

于 2013-04-22T13:48:53.600 に答える