使用samaccountname修改AD LDAP对象

时间:2016-02-01 21:03:51

标签: php active-directory ldap

我有一个可以运行的PHP脚本,但我需要在此示例中将其更改为使用AD帐户(samaccountname)而不是CN;

<?php

$base_dn="CN=Peter Parker,OU=Subcontainer,OU=Subcontainer,OU=Container,
DC=domain,DC=com";
$ldapconn = ldap_connect("host.domain.com") or die("Could not connect to LDAP server.");

if ($ldapconn)
{
    $ldapbind = ldap_bind($ldapconn, $ldapusername, $ldappassword);

    if ($ldapbind)
    {
        echo "LDAP bind successful ...";
    }
    else
    {
        echo "LDAP bind failed ...";
    }
}

$newinfo['ipphone']="555";
ldap_modify($ldapconn,$base_dn,$newinfo);
?>

目的是为AD中的用户修改ipphone对象,但我无法使用CN,因为此输入对于任务来说不够独特。如果帐户的基本DN中的CN是用户的描述性名称,我运气不好吗?

1 个答案:

答案 0 :(得分:1)

您必须为ldap_modify提供您要更改的帐户的专有名称(DN)。没有办法解决这个问题。

如果您刚开始只知道sAMAccountName,那么您可以先在域中搜索该帐户,然后从结果中获取distinguishedName属性。

要进行搜索,请使用过滤器“({sAMAccountName = username)”使用ldap_search