簡體   English   中英

在使用IE / Firefox時使用PHP,活動目錄對ldap進行身份驗證

[英]Authenticate against ldap using PHP, active directory, while using IE/Firefox

下面的代碼檢查用戶對ldap的憑據

<?php
$ldaphost = "ldap.domain.com";
$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to $ldaphost");

if ($ds) 
{
    $username = "johndoe@domain.com";
    $upasswd = "pass";

    $ldapbind = ldap_bind($ds, $username, $upasswd);

    if ($ldapbind) 
        {print "Congratulations! $username is authenticated.";}
    else 
        {print "Access Denied!";}
}
?>

我的用戶使用Firefox和IE,我知道可以無縫傳遞他們的ActiveDirectory證書。

我只想檢查AD組以查看是否在那里找到該用戶名,如果是,則顯示該頁面,否則提示輸入憑據。

由於我們的用戶已經登錄到域控制器,我想獲取他們的用戶名,檢查是否在特定組中找到它,然后讓他們進入,否則提示用戶輸入憑據。 這怎么可能?

實際上,您不需要使用PP代碼與Active Directory服務器通信,以實現您希望使用IIS作為Web服務器的事實。

這里的關鍵詞是集成Windows身份驗證 - 這是djn 尋找的措辭。 如果啟用此選項(並拒絕匿名訪問),IIS將根據Active Directory檢查提供的憑據以及所請求資源的NTFS文件系統特權。 因此,您可以使用簡單的NTFS訪問控制機制來控制對文件的訪問。

如果您的用戶使用IE,他們甚至不必輸入他們的憑據,因為這是通過所謂的SPNEGO (簡單和受保護的GSSAPI協商機制)及其底層機制KerberosNTLMSSP自動完成的,具體取決於您的客戶端和服務器的能力處理。

據我所知,Firefox也能夠自動將Windows登錄憑據交給您的服務器。 您必須調整配置選項才能啟用該功能 - 不知道此信息在Firefox 3.5.x中是否仍然有效。

如果您在* nix系統上運行Apache,則必須使用某些服務器端模塊來處理類似於集成Windows身份驗證的系統。 可能的選項是(不知道它們實際上是否仍然保持或穩定):

對於Windows上的Apache,有:

請注意,大多數這些模塊似乎都很老。

剛剛在類似的設置上工作:我跳過所有那些讓Web服務器用AD驗證客戶端的LDAP內容,然后讓他進去(對不起,我不記得在M $備用宇宙中這叫做什么)。

如果客戶端到達PHP腳本,他在AD中,我的用戶名都在$_SERVER["AUTH_USER"]$_SERVER["LOGON_USER"] ,否則他永遠不會訪問腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM