適切な方法でそれを解決しようとしているのかわからないので、私の本当の目標を説明することから始めましょう=)
WebアプリケーションにKerberos資格情報を取得させようとしています代理でログインするユーザーの。Webサーバーは私のLinuxドメインの一部です(FreeIPA/RedHat IdMに登録されています)。クライアントはexternalですが、ユーザーは私のドメインに存在します。だから私が達成したいのはこれです:
これまで、mod_intercept_form_submit
で遊んでいましたが、pam_sss.so
(PAM + SSSD)を使用して、FreeIPAに対してユーザーを認証することができました。これは問題なく機能しましたが、ユーザー用に取得したTGTが見つからなかったため、項目3を実行できませんでした。
または、ApacheでGSSAPI認証を使用することもできますが、クライアントがドメインに登録されていないため、システムログインフォームが表示されます(理想的には、Webアプリのカスタムログインフォームを使用したい)。
あるいは、webappがログインフォームからパスワードを率直に取得し、それを使用してWebサーバー上で直接kinit <username>
を実行することもできると思います。
あなたの推奨する方法は何ですか?何かエレガントなものがあるに違いないと思うので...例: PAMがKerberosTGTを取得し、ログイン後にWebアプリがアクセスできるようになれば、それは素晴らしいことです...
その後のVaultまたはFreeIPAに対する操作のために、WebアプリケーションにTGTが本当に必要かどうか疑問に思います。 Kerberosサービスチケットで十分なようです。
そのためには、S4U2ProxyとS4U2Selfを使用するのが最善のアプローチかもしれません。 mod_auth_gssapiモジュールは、GssapiUseS4U2ProxyおよびGssapiImpersonateディレクティブを介してそれらをサポートします。実際、FreeIPAのWebUIは、LDAPバックエンドに対して動作するときにまったく同じメカニズムを使用しています。