web-dev-qa-db-ja.com

KerberosSSOログインの失敗時にApacheリダイレクトまたはカスタム401ドキュメントを設定する方法

Kerberos SSOセットアップが機能しており、mod_jkでApacheとjbossを使用しています。 Apacheは、次の構成でauto-login.htmページを(Kerberosによって)保護しています。

<Location /auto-login.htm>  
AuthType           Kerberos  
AuthName           "Kerberos Active Directory Login"  
KrbMethodNegotiate on  
KrbMethodK5Passwd  on  
KrbAuthRealms      KRB.SOMEDOMAIN.COM  
KrbServiceName     HTTP/[email protected]  
Krb5Keytab         /etc/krb/krb5.keytab  
KrbVerifyKDC       on  
KrbAuthoritative   on  
require            valid-user  
#ErrorDocument 401  /login.htm  
</Location>

これは100%動作し、Kerberos/SSOでログインして、Javaアプリケーションでremote_user変数を読み取ることができます。

ここでの問題は、ユーザーがKerberos/SSO経由でログインできなかった場合に、保護されていないlogin.htmにリダイレクトしたいということです。私が考えていた解決策は401ErrorDocumentを設定することでしたが、上記のコードで#ErrorDocument 401のコメントを外してこれを設定すると、ユーザー資格情報を要求するために401を返すことは本質的にKerberosの一部であるため、常にlogin.htmにリダイレクトされます。/SSO認証プロセス。したがって、結果として、ユーザーは常にlogin.htmにアクセスし、Kerberos/SSOログインプロセスを完了することはありません。

任意のヘルプまたは代替ソリューションをいただければ幸いです。

前もって感謝します
ピエール

6

Kerberos/SSO認証プロセスを中断しないようにするには、以下を使用します。

ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/login.htm\"></html>"

これにより、ユーザーがブラウザのダイアログボックスで[キャンセル]をクリックした場合にのみリダイレクトが発生します。

6

私はあなたが欲しいと信じていますErrorDocument 403。サーバーが認証を要求すると401が返され、クライアントが認証を提供できなかった場合は403が返されます。これは、x.509認証を設定する場合に少なくとも当てはまります。

0
WheresAlice