
嘗試在 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 內部主機)順利傳遞。
以防萬一將來的谷歌搜尋將某人帶到這裡...