Php

如何讓 LDAP 將目前登錄使用者的憑據傳遞給本地 Apache 伺服器?

  • August 20, 2015

我正在嘗試讓 SSO(單點登錄)在本地 osTicket 安裝上工作。我在 osTicket 網站上找到了 HTTP passthru 外掛,並將其安裝在 osTicket 中。我通過確保我可以訪問外掛設置來確保外掛正常工作。因此,據我所知,應該發生的是從 Windows 讀取使用者的憑據,然後直接傳遞到 osTicket 以便使用者自動登錄。如果我對外掛的工作方式有誤,請糾正我。我還確保 LDAP 外掛正常工作並安裝在 osTicket 中。我做了一些關於為什麼自動登錄不起作用的研究,並意識到 HTTP 身份驗證與 Windows AD 身份驗證不同。我查找了 SSPI、Kerberos、等等,看看我是否可以獲取 Apache 伺服器的 Windows 憑據,並假設 LDAP 模組應該能夠獲取這些憑據。如果我對 LDAP 模組的工作方式有誤,請再次糾正我。最終,我剛剛安裝了 XAMPP 並重新安裝了 WAMP。讓 LDAP 解決這個問題,現在我正試圖找到一種方法來獲取 Apache 的憑據。我編寫了一個簡單的腳本,應該回顯目前登錄的使用者。

<?php
$user = $_SERVER['REMOTE_USER'];
?>
<html>
<body>
<?php echo $user;?>
</body>
</html>

但是,當我執行此腳本時,出現以下錯誤。

( ! ) 注意:未定義索引:第 2 行 C:\wamp\www\servertest.php 中的 REMOTE_USER

這告訴我 $_SERVER 的超全域沒有為目前連接的使用者獲取 Windows 憑據。如何使用 Windows 憑據填充這個超全域數組?是否有任何配置選項需要添加到我的 HTTPD.conf 中?

您需要為 ldap 和/或 kerberos 身份驗證配置 wamp 安裝,這些變數將可用於您的 php 腳本。

對於 Apache 2.2(今天最常見): http ://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html

對於 Apache 2.4: http ://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html

如果您需要單點登錄,那麼您還需要配置 mod_kerberos。我從未使用過 xampp 或 wamp,所以我不知道他們是否有 mod_kerberos。

如果您想要一些無需了解它是如何工作的**就可以工作的東西,那麼您可以在執行 Windows 時安裝 IIS。非家庭現代版本的 Windows 桌面將允許在同時連接的數量上有一些限制的情況下執行它,而伺服器版本則沒有這個限制。

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