如何从网站访问Active目录?

时间:2014-07-04 06:16:16

标签: php active-directory ldap

我有一个小问题,我需要了解更多,我已经构建了一个通过Active目录验证用户的网站,它是在PHP中使用ldap函数完成的,它运行良好。问题我将网站上传到托管服务器后,我不知道如何访问Active目录。我应该做的步骤是什么?

这是进一步理解的代码: -

<?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);
        } 
?>

提前感谢..... :)

2 个答案:

答案 0 :(得分:0)

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

如果您的当前AD域的Web服务器(例如,您将其放在像godaddy或hostgator这样的远程主机上),那么您需要使用不同的身份验证方法。具体来说,您需要查看:

SimpleSAMLphp并谷歌了解它如何与ADFS(Active Directory联合服务)进行交互。挑战在于,您必须创建一种方式,使您的私有网络与其私有托管的域控制器可以向Web发送/接收极其敏感,极其需要安全的数据。

答案 1 :(得分:0)

这个问题,因为您的LDAP在本地计算机上,对吧?

但是,您的网站位于服务器上并具有公共IP。因此,您必须具有到本地LDAP的隧道,或者您可以将LDAP发布到外部,因此您的网站可以访问您的LDAP。