Apache-2.4

Kerberos Apache 不斷要求 BASIC

  • March 31, 2019

在我的網站上掙扎了很長時間的kerberos身份驗證之後,我終於來找你了,因為我迷路了。我目前正在創建一個經典的 PHP 網站,我想通過使用 kerberos 進行無縫身份驗證。

所以情況如下:

  1. 我有一個具有 KDC 角色的 Windows 2012R2 域控制器。
  2. 我有一個 Linux LAMP 伺服器 (fqdn = webserver.domain.local)。
  3. 我有我的網站,它託管在 Linux 伺服器上,可以通過 HTTPS 使用以下名稱訪問:site.domain.local

我主要按照以下說明設置了我的 kerberos 身份驗證:https ://serverfault.com/a/753956/506532 (我的 SPN 是HTTPS/site.domain.local@DOMAIN.LOCAL

我還在site.domain.localIE 設置中註冊為“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 實現)。

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