好吧,我很难过。
我正在尝试编写一些PHP代码,以使用密码在Active Directory中创建用户。
如果与Server 2008r2 Windows域控制器交谈,那么PHP将运行Ubuntu服务器。
我可以使用PHP创建用户没有问题,但我无法设置密码。我尝试过在互联网上感觉像每个可能的代码,但它不会起作用。
我相信我必须创建用户然后再修改密码。因此,我有以下代码。
$domadlogin = 'domainadminusername';
$domadpw = 'a2b3c4d5e';
$domctrl = 'ldaps://DCIPADDRESS';
$ldapServer = $domctrl;
$ldapBase = 'OU=Users,DC=example,DC=co,DC=uk';
$ds = ldap_connect($ldapServer);
if (!$ds) {die('Cannot Connect to LDAP server');}
$ldapBind = ldap_bind($ds,$domadlogin,$domadpw);
if (!$ldapBind) {die('Cannot Bind to LDAP server');}
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$dn_user='CN=Test User,OU=New Users,OU=Users,DC=example,DC=co,DC=uk';;
$newPassword = "1.Password!";
$newPassword = "\"" . $newPassword . "\"";
$len = strlen($newPassword);
for ($i = 0; $i < $len; $i++)
{
$newPassw .= "{$newPassword{$i}}\000";
}
$newPassword = base64_encode($newPassw);
$userdata['unicodePwd'] = $newPassword;
$result = ldap_modify($ds, $dn_user, $userdata);
if ($result) echo "User modified!" ;
else echo "There was a problem!";
ldap_unbind($ds);
我知道LDAPS正在运行
ldapsearch -x -d 2 -LLL -H ldaps://DCIPADDRESS -b 'OU=Users,DC=example,DC=co,DC=uk' -D 'domainadminusername' -W '(sAMAccountName=username)'
任何人都可以告诉我我做错了什么。
由于
答案 0 :(得分:0)
我在这里不是PHP作家,我回答了一个封闭式问题中的一些指导原则:
使用PHP,您可以使用LDAP更改或创建具有正确密码和AD用户密码的用户,并在SSL连接上进行简单绑定。
为此,您需要在AD服务器上安装证书。简单的方法(不是更有吸引力)是在您的域上安装Microsoft证书服务器(企业安装see Configuring Microsoft Active Directory for SSL Access),然后重新启动域控制器。您还可以使用OpenSSL生成证书并将其安装在计算机上(请参阅How to enable LDAP over SSL with a third-party certification authority)。
以下是允许在SSL连接上使用其密码创建用户的LDIF文件示例,您将找到我为密码生成基本64字符串的方式:
# Imported with :
# ldifde -i -t 636 -f .\Annuaire3.ldf
# Password generated by ("" must be encoded inside):
# stringconverter.exe \"test.2011\" /unicode /encode
# Connexion then tested with :
# runas /user:jdupont cmd.exe (password is test.2011)
dn: cn=Jean Dupont,OU=MonOU,DC=societe0,DC=fr
changetype: add
objectClass: user
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Jean Dupont
givenName: Jean
sn: Dupont
mail: jean.Dupont@societe.fr
telephoneNumber: 9999
userAccountControl: 544
sAMaccountName: jdupont
userPrincipalName: jdupont@societe.fr
unicodePwd:: IgB0AGUAcwB0AC4AMgAwADEAMQAiAA==