「require valid-user」がなくてもmod_auth_kerbにジョブを実行させる方法


11

Apacheでmod_auth_kerbを使用てSSO認証を実装しました。私の設定は次のようになります:

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>

私の問題は、なしrequire valid-userではmod_auth_kerbがユーザーを認証しようとさえせず、最終的にはであるというKERBEROS_USERこと(null)です。を追加するrequire valid-userと、ブラウザがサポートしている場合、ユーザーは自動的に認証されますが、ブラウザがKerberosネゴシエートをサポートしていない場合は、lyいモーダルログインフォーム(HTTP基本認証)が表示されます。

私が達成したいのは、ユーザーが/login/にアクセスすると、mod_auth_kerbがKerberos Negotiateを介してユーザーを認証しようとすることです。それが失敗した場合、通常のHTMLログインフォームがユーザーに表示されます。

Apache / mod_auth_kerbをそのような方法で構成することは可能ですか?


ログインフォームの提供と適切なエラー処理がなければ、これは適切な(予想される)動作です。
BillThor

回答:


12

Kerberosをmod_auth_tktにマージするためのシンプルなシングルサインオンツールを構築したときに、これを1回行いました。ちょっとしたシカネリが必要でした:

  • / webauth / loginはrequire valid-userディレクティブによって保護されていました。誰かが有効なKerberos資格情報で接続した場合、REMOTE_USERからユーザー名を取得し、認証Cookieを与えて、途中で送信しました。

  • Apache構成は、ErrorDocument認証されていないユーザーを/ webauth / require_authenticationにリダイレクトする要求を使用しました。

    ErrorDocument 401 / webauth / require_authentication

    これにより、次のアクションが実行されます。

    • 401結果コードを返します(通常、ErrorDocumentsは結果コードを消費します)。
    • ログインフォームを提示します。
  • ログインフォームは、ユーザー名/パスワードフォームを提示し、同じものを検証してから、認証Cookieを提供するという、まさにあなたが期待することをします。


興味深いソリューションのために+1。
サムハリケ

素晴らしい、これは完璧に動作します!
ベンジャミンウォルウェンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.