Kerberos Apache 不斷要求 BASIC
在我的網站上掙扎了很長時間的kerberos身份驗證之後,我終於來找你了,因為我迷路了。我目前正在創建一個經典的 PHP 網站,我想通過使用 kerberos 進行無縫身份驗證。
所以情況如下:
- 我有一個具有 KDC 角色的 Windows 2012R2 域控制器。
- 我有一個 Linux LAMP 伺服器 (fqdn =
webserver.domain.local
)。- 我有我的網站,它託管在 Linux 伺服器上,可以通過 HTTPS 使用以下名稱訪問:
site.domain.local
我主要按照以下說明設置了我的 kerberos 身份驗證:https ://serverfault.com/a/753956/506532 (我的 SPN 是
HTTPS/site.domain.local@DOMAIN.LOCAL
)我還在
site.domain.local
IE 設置中註冊為“Intranet 網站”。當我使用 kinit 從網路伺服器檢查 kerberos 身份驗證是否工作時,身份驗證成功,但是當我從我的電腦(當然,它連結到域)訪問 site.domain.local 時,它會提示我進行身份驗證基本的。我可以使用我的憑據成功登錄,但我認為 kerberos 無法正常工作,我不明白為什麼。
訪問該網站時,我在 Apache 的日誌中收到此錯誤:
gss_accept_sec_context() 失敗:請求了不受支持的機制(,未知錯誤)
啟用調試模式後,我得到這些日誌:
kerb_authenticate_user 使用使用者 (NULL) 和 auth_type Kerberos 輸入
kerb_authenticate_user 使用使用者 (NULL) 和 auth_type Kerberos 輸入
獲取 HTTPS/site.domain.local@DOMAIN.LOCAL 的憑據
使用 KRB5 GSS-API 驗證客戶端數據
客戶沒有將他們的憑證委託給我們
警告:收到的令牌似乎是 NTLM,Kerberos 模組不支持。檢查您的 IE 配置。
GSS-API 主要狀態:00010000,次要狀態:00000000
我搜尋了一個解決方案,每個有這種行為的人都通過將網站作為 IE 中的“內聯網網站”來解決它,但它已經為我完成了……
有誰有想法嗎 ?
您的 SPN 不正確。它應該是
HTTP/site.domain.local
- HTTP 和 HTTPS 被視為相同的服務類 (HTTP)。
- 您不應該在 SPN 中包含領域名稱(至少對於 Active Directory,不確定其他 Kerberos 實現)。