Apache-2.2

如何在 Kerberos SSO 登錄失敗時設置 apache 重定向或自定義 401 文件

  • September 14, 2020

我有一個有效的 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 身份驗證時至少是這樣。

引用自:https://serverfault.com/questions/101462