我们针对被终止/分居或休假的人的政策涉及对其AD帐户进行少量更改,以保持记录和安全。其中一项更改是将帐户(登录名,显示名称和dn)重命名为包含附加了帮助台票号的原始名称的值。
我已经能够使用ldap_rename()来更改活动目录“name”属性,从而更改DN。我可以使用ldap_modify()或ldap_mod_replace()更改displayName属性。我似乎无法做的是使用其中任何一个更改samAccountName。下面是我正在使用的代码的核心。我得到的错误取决于我使用的功能,并在下面列出。
我知道在Active Directory中使用PHP LDAP有一些细微差别,但我发现很难相信我已经能够完成所有工作,包括更改密码,我无法更改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);
}
?>
所以是的,我应该做些什么才能实现这一目标?
答案 0 :(得分:0)
&#34;具体实施&#34;您收到的错误消息表示您的sAMAccountName无效,因为它不符合特定的AD限制。 sAMAccountName属性不能超过20个字符,并且不能包含以下任何内容:" [ ] : ; | = + * ? < > / \ ,
。查看附加了票号的示例用户名可能会有所帮助。