使用 LAMP GSSAPI/Kerberos 直通 Windows AD 驗證

使用 LAMP GSSAPI/Kerberos 直通 Windows AD 驗證

嘗試在 Windows AD 上建立 LAMP 伺服器並讓直通身份驗證正常運作。有一個問題(這可能不像我所做的那麼重要),主機名稱和託管 URL 不符:LAMP 主機名稱是intranethost.mspca.org,託管 URL 是https://testintranet.mspca.org

AD 是林/網域等級 2012R2。

LAMP 是 Debian 11.8,並隨 Apache 安裝了 mod_auth_gssapi。 LAMP 沒有安裝 Samba,也不是 AD 網域的成員(不確定是否有必要)。

使用以下內容從 Windows DC 建立了一個 keyspan 檔案:

ktpass -princ HTTPS/[email protected] -mapuser [email protected] -pass ******** -ptype KRB5_NT_PRINCIPAL -out testintranet-spn.keytab

我的領域已正確添加到 krb5.cnf 中,LAMP 的 kinit 順利通過。

Apache conf(基於教程https://www.jfcarter.net/%7Ejimc/documents/bugfix/41-auth-kerb.html):

<IfModule !mod_auth_gssapi.c>
    LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>

<VirtualHost *:80>
        ServerName testintranet.mspca.org
#       Redirect permanent / https://testintranet.mspca.org/
</VirtualHost>

<VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /etc/ssl/certs/star_mspca_org.crt
        SSLCertificateKeyFile /etc/ssl/private/star_mspca_org.key
        ServerAdmin [email protected]
        ServerName testintranet.mspca.org
        DocumentRoot /var/www/html/wordpress/

        <Directory "/var/www/html/wordpress/">
                AllowOverride All
                AuthType GSSAPI
                AuthName "GSSAPI Single Sign On Login"
                GssapiSSLonly On
                GssapiAllowedMech krb5
                GssapiBasicAuth On
                GssapiCredStore keytab:/etc/apache2/testintranet-spn.keytab
                GssapiLocalName On
                BrowserMatch Windows gssapi-no-negotiate
                Require valid-user
                GssapiNegotiateOnce on
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/wordpress.error.log
        CustomLog ${APACHE_LOG_DIR}/wordpress.access.log combined
        LogLevel info auth_gssapi:debug ssl:warn
</VirtualHost>

身份驗證本身實際上正在工作,但我仍然收到該網站的初始登入提示。它不會將目前登入的信用資訊傳遞到會話中。我已將網站的每個排列(http/s、短名稱、FQDN)新增至 Intranet 安全等級頁面的 GPO 中,但 chrome 仍然頑固地顯示登入對話方塊。 Apache 日誌中只有「錯誤」才是有用的NO AUTH DATA Client did not send any authentication headers

翻轉GssapiBasicAuth到“關閉”會消除該對話框,但我立即收到 401 未經授權,所以它就像根本沒有傳遞標題...

有什麼建議麼?

答案1

這個小傢伙:

BrowserMatch Windows gssapi-no-negotiate

我發誓,我看到了多個站點“如果沒有這條線,Windows 客戶端將無法工作...”

我採取了那條線出去,現在它按預期 100% 工作。驗證從目前登入的 Windows 使用者(透過 Chrome 到 FQDN 內部主機)順利傳遞。

以防萬一將來的谷歌搜尋將某人帶到這裡...

相關內容