Apache-2.2
如何在 Kerberos SSO 登錄失敗時設置 apache 重定向或自定義 401 文件
我有一個有效的 Kerberos SSO 設置,我將 apache 和 jboss 與 mod_jk 一起使用。Apache 使用以下配置(通過 kerberos)保護 auto-login.htm 頁面:
<Location /auto-login.htm> AuthType Kerberos AuthName "Kerberos Active Directory Login" KrbMethodNegotiate on KrbMethodK5Passwd on KrbAuthRealms KRB.SOMEDOMAIN.COM KrbServiceName HTTP/server.somedomain.com@KRB.SOMEDOMAIN.COM 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。我想到的解決方案是設置 401 ErrorDocument,但是當我通過在上面的程式碼中取消註釋 #ErrorDocument 401 來設置它時,它總是重定向到 login.htm,因為返回 401 來請求使用者憑據本質上是 Kerberos 的一部分/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 身份驗證時至少是這樣。