(Debian 擠壓)
我正在嘗試將 apache 設定為使用 Kerberos 驗證來允許 AD 使用者登入。配置的AuthName 字串(即:第一個視窗是通用使用者名稱/密碼,第二個視窗包含標題「Kerberos Login」)我不擔心整合Windows 驗證在這個階段的工作,我只是希望使用者能夠使用他們的AD 帳戶登錄,這樣我們就不需要設定第二個使用者帳戶儲存庫。
我該如何解決這個問題以消除第一個無用的提示?
apache2.conf 檔案中的指令:
<Directory /var/www/kerberos>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms ONEVUE.COM.AU.LOCAL
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/[email protected]
require valid-user
</Directory>
krb5.conf:
[libdefaults]
default_realm = ONEVUE.COM.AU.LOCAL
[realms]
ONEVUE.COM.AU.LOCAL = {
kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
master_kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
admin_server = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
default_domain = ONEVUE.COM.AU.LOCAL
}
[login]
krb4_convert = true
krb4_get_tickets = false
存取受保護目錄時的存取日誌(注意兩個單獨的 401)
192.168.10.115 - - [24/Aug/2012:15:52:01 +1000] "GET /kerberos/ HTTP/1.1" 401 710 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - - [24/Aug/2012:15:52:06 +1000] "GET /kerberos/ HTTP/1.1" 401 680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - [email protected] [24/Aug/2012:15:52:10 +1000] "GET /kerberos/ HTTP/1.1" 200 375 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
error.log 中的一行
[Fri Aug 24 15:52:06 2012] [error] [client 192.168.0.115] gss_accept_sec_context(2) failed: An unsupported mechanism was requested (, Unknown error)
答案1
我不知道您是否還需要答案,但我希望透過分享我的經驗對其他人有所幫助。我相信,如果您遵循這些步驟,一切都會順利進行。
- 確保您有正確的 DNS 項目SYD01TBUG02您的 DNS 伺服器上的(一筆記錄)指向您的網路伺服器
- 確保您的 Web 服務的 SPN 和 AD 使用者之間存在關聯。在 AD 伺服器上執行以下命令:
setspn -A HTTP/SYD01TBUG02.onevue.com.au.local ad_username
- 確保您已產生正確的密鑰表。在 AD 伺服器中執行以下命令:
其中 xxxxxx 是 AD 使用者密碼。我們用-加密全部選項以確保我們將所有支援的雜湊添加到密鑰表檔案中。ktpass -princ HTTP/[email protected] -mapuser ad_username -pass xxxxxx -crypto ALL -ptype KRB5_NT_PRINCIPAL -out SYD01TBUG02.keytab -setupn -setpass
- 現在你應該複製生成的SYD01TBUG02.keytab檔案到您的網頁伺服器並將其複製到特定目錄。例如,我們將其複製到/etc/apache2/keytab/資料夾。
- Web 服務的 apache 設定檔範例:
<VirtualHost *:80> DocumentRoot "/var/www/kerberos" ServerName SYD01TBUG02.onevue.com.au.local ServerAlias SYD01TBUG02 AddDefaultCharset UTF-8 DirectoryIndex index.php ErrorLog /var/log/apache2/error_SYD01TBUG02.log TransferLog /var/log/apache2/transfer_SYD01TBUG02.log LogLevel warn ServerAdmin [email protected] <Location "/"> AuthType Kerberos KrbAuthRealms ONEVUE.COM.AU.LOCAL KrbServiceName HTTP/[email protected] Krb5Keytab /etc/apache2/keytab/SYD01TBUG02.keytab KrbMethodNegotiate on KrbMethodK5Passwd on KrbVerifyKDC on require valid-user </Location> <Directory /> </Directory> </VirtualHost>
重新載入或重新啟動apache - 現在,如果您在瀏覽器網址列中輸入 http://SYD01TBUG02/,您將透過 SSO 自動登入您的 Web 服務(Chrome、類似 Chromium 的瀏覽器和 IE 開箱即用地支援 SSO,但還有一個火狐瀏覽器插件)。
sudo service apache2 reload
希望這將有助於在網頁伺服器上設定 Kerberos 身份驗證。
聚苯乙烯如果您想透過完整位址啟用 SSO(例如SYD01TBUG02.onevue.com.au.local)你應該添加SYD01TBUG02.onevue.com.au.local透過 AD 群組原則(如果需要在網域中的多台電腦上使用)或透過 Internet Explorer 設定本地到 Intranet 區域。這些設定會影響系統中安裝的所有瀏覽器。
答案2
這是因為使用者第一次輸入 u/p 時,ntlm 令牌會傳送到伺服器。第二次是正確的 kerberos 令牌。
不幸的是,您無法消除第一個提示。
答案3
如果不需要單一登錄,您可以透過設定「KrbMethodNegotiate off」來停用協商。這將為您提供一次基本登錄,並避免每筆交易的額外 GET 請求。