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ログインプロセスを完了することはありません。
任意のヘルプまたは代替ソリューションをいただければ幸いです。
前もって感謝します
ピエール
Kerberos/SSO認証プロセスを中断しないようにするには、以下を使用します。
ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/login.htm\"></html>"
これにより、ユーザーがブラウザのダイアログボックスで[キャンセル]をクリックした場合にのみリダイレクトが発生します。
私はあなたが欲しいと信じていますErrorDocument 403
。サーバーが認証を要求すると401が返され、クライアントが認証を提供できなかった場合は403が返されます。これは、x.509認証を設定する場合に少なくとも当てはまります。