如何从网站访问Active directory


How to access Active directory from a website?

我有一个小问题,我需要更多地了解,我建立了一个网站,通过活动目录认证用户,它是使用PHP中的ldap函数完成的,它是完美的工作。问题是,我不知道如何访问活动目录后,我上传网站到主机服务器。我应该做哪些步骤?

下面是进一步理解的代码:-
<?php
if(isset($_POST['username']) && isset($_POST['password'])){
    $adServer = "ldap://Qarunho.local";
    $ldap = ldap_connect($adServer);
    $username = $_POST['username'];
    $password = $_POST['password'];
    $ldaprdn = 'Qarunho' . "''" . $username;
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
    $bind = @ldap_bind($ldap, $ldaprdn, $password);
    if(!empty($_POST['username'])&&!empty($_POST['password'])){
        if ($bind) {
            $filter="(sAMAccountName=$username)";
            $result = ldap_search($ldap,"dc=Qarunho,dc=Local",$filter);
            ldap_sort($ldap,$result,"sn");
            $info = ldap_get_entries($ldap, $result);
            for ($i=0; $i<$info["count"]; $i++)
            {
                if($info['count'] > 1)
                    break;
                            $_SESSION['sn'] = $info[$i]["givenname"][0].'     '.$info[$i]["sn"][0];
                            header('location:manager_page.php'); 
            }
            @ldap_close($ldap);
        } 
?>

thanks in advance .....:)

这实际上取决于它的托管位置。如果web服务器是当前ActiveDirectory域的本地服务器,那么问题可能是您的web服务器没有明确的安全/网络路径到您的一个域控制器。

如果web服务器不是本地到你当前的AD域(例如,你把它放在一个远程主机像godaddy或hostgator),那么你需要使用不同的身份验证方法。具体来说,您需要看一下:

SimpleSAMLphp和谷歌如何与ADFS (Active Directory Federated Services)交互。挑战在于你必须创造一种方式,让你的私有网络和它的私有托管域控制器可以向网络发送/接收极其敏感、极其需要安全的数据。

这是个问题,因为LDAP在本地计算机上,对吗?

但是,你的网站在服务器上,并且有公共IP。所以,你必须有隧道到你的本地LDAP或者你可以发布你的LDAP到外部,这样你的网站可以访问你的LDAP