【问题标题】:PHP LDAP to change Active Directory samAccountName?PHP LDAP 更改 Active Directory samAccountName?
【发布时间】:2013-01-23 17:01:17
【问题描述】:

我们针对被解雇/分居或请假的人员的政策涉及对其 AD 帐户进行一些更改,以保持记录和安全。其中一项更改是将帐户(登录名、显示名和 dn)重命名为包含原始名称和附加服务台票号的值。

我已经能够使用 ldap_rename() 来更改活动目录的“名称”属性,从而更改 DN。我可以使用 ldap_modify() 或 ldap_mod_replace() 更改 displayName 属性。我似乎不能做的是使用其中任何一个更改 samAccountName 。下面是我正在使用的代码的核心。我得到的错误取决于我使用的函数,并在下面列出。

我知道将 PHP LDAP 与 Active Directory 结合使用存在一些细微差别,但我很难相信我已经能够完成包括更改密码在内的所有操作,而且我无法更改 samAccountName...帮助?

<?php
 $connection=ldap_connect(domain.local,389);
 ldap_set_option($connection,LDAP_OPT_PROTOCOL_VERSION,3);
 ldap_set_option($connection,LDAP_OPT_REFERRALS,0);
 ldap_start_tls($connection);
 ldap_bind($connection,$username,$password);

 $accountName=$_POST["accountName"];
 $ticketNumber=$_POST["ticketNumber"];
 $baseDn="dc=domain,dc=local";
 $attribs=array("samaccountname","dn","name","displayname","description","info","memberof");

 $search=ldap_search($connection,$baseDn,"(samaccountname=".$accountName.")",$attribs);
 $result=ldap_get_entries($connection,$search);


// ldap_modify returns error 80: Internal (implementation specific) error.
 foreach ($result as $account) {
  $newValues=array("samaccountname"=>$account["samaccountname"][0]."-".$ticketNumber)
 ldap_modify($connection,$account["dn"],$newValues);
 }

// ldap_mod_replace returns error 80: Internal (implementation specific) error.)
 foreach ($result as $account) {
  $newValues=array("samaccountname"=>$account["samaccountname"][0]."-".$ticketNumber)
 ldap_mod_replace($connection,$account["dn"],$newValues);
 }
?>

所以是的,我应该做些什么来实现这一点?

【问题讨论】:

  • 您的请求票号长度是多少?您的 samaccountname 有效吗?
  • 您的代码容易受到 LDAP 注入攻击。
  • @user2004615 你能用LDAP S/W手动完成吗
  • @SparKot 抱歉,我刚刚回到这个话题。是的,我可以使用 Apache Directory Studio。

标签: php active-directory ldap


【解决方案1】:

您收到的“特定于实施”错误消息意味着您的 sAMAccountName 无效,因为它不符合特定的 AD 限制。 sAMAccountName 属性不能超过 20 个字符,并且不能包含以下任何内容:" [ ] : ; | = + * ? &lt; &gt; / \ ,。查看附加票号的示例用户名可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2015-09-11
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多