Ändern des Kennworts in Active Directory mit LDAP/PHP/IIS/SSL
Zuerst von allen, kann dies weniger eine Frage der Programmierung und mehr zu einem wie kann ich konfigurieren von LDAPS Frage, aber hier geht...
Hintergrund-Info:
Ich habe zwei Windows 2008 R2 Server. Ist ein domain controller (DC) mit Active Directory (AD), die ich kommunizieren will, mit über LDAP. Dies wird mit TestBox.TestDomain.local. Die anderen server mit IIS, PHP (mit ldap und openssl), und mySQL.
, Was ist/nicht funktioniert:
Kann ich erfolgreich eine Verbindung zum DC ungesichert über port 389 und Lesen/schreiben von Daten zur ANZEIGE. Was ich nicht kann, ist zu ändern oder legen Sie Benutzer-Passwörter, da diese erfordert eine sichere Verbindung mit LDAPS (LDAP-w/SSL) über port 636.
Was ich benötige Hilfe:
Habe ich versucht, die Installation von Active Directory Certificate Services (AD CS) und konfigurieren Sie den DC als Zertifizierungsstelle (Certificate Authority, CA) unter Verwendung von Informationen finden Sie hier: http://technet.microsoft.com/en-us/library/cc770357(WS.10).aspx aber egal was ich versuche ich bekomme keine Verbindung über SSL zu arbeiten.
Beispielcode:
Dem erstellen der LDAP-Verbindung
function ldapConnect(){
$ip = "100.200.300.400"; //WAN IP goes here;
$ldap_url = "ldap://$ip";
$ldaps_url = "ldaps://$ip";
$ldap_domain = 'testdomain.local';
$ldap_dn = "dc=testdomain,dc=local";
//Unsecure - WORKS
$ldap_conn = ldap_connect( $ldap_url ) or die("Could not connect to LDAP server ($ldap_url)");
//alternate connection method
//$ldap_conn=ldap_connect( $ip, 389 ) or die("Could not connect to LDAP server (IP: $ip, PORT: 389)");
//Secure - DOESN'T WORK
//$ldap_conn = ldap_connect( $ldaps_url ) or die("Could not connect to LDAP server ($ldaps_url)");
//alternate connection method
//$ldap_conn=ldap_connect( $ip, 636 ) or die("Could not connect to LDAP server (IP: $ip, PORT: 636)");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
$username = "AdminUser";
$password = "AdminPass";
//bind using admin username and password
//could also use dn... ie. CN=Administrator,CN=Users,DC=TestDomain,DC=local
$result = ldap_bind($ldap_conn, "$username@$ldap_domain", $password ) or die("<br>Error: Couldn't bind to server using supplied credentials!");
if($result){
return $ldap_conn;
}else{
die("<br>Error: Couldn't bind to server using supplied credentials!");
}
}
Hinzufügen eines Neuen Benutzers zu Active Directory
function ldapAddUser($ldap_conn, $ou_dn, $firstName, $lastName, $username, $pwdtxt, $email){
$dn = "CN=$firstName $lastName,".$ou_dn;
## Create Unicode password
$newPassword = "\"" . $pwdtxt . "\"";
$len = strlen($newPassword);
$newPassw = "";
for($i=0;$i<$len;$i++) {
$newPassw .= "{$newPassword{$i}}\000";
}
$ldaprecord['cn'] = $firstName." ".$lastName;
$ldaprecord['displayName'] = $firstName." ".$lastName;
$ldaprecord['name'] = $firstName." ".$lastName;
$ldaprecord['givenName'] = $firstName;
$ldaprecord['sn'] = $lastName;
$ldaprecord['mail'] = $email;
$ldaprecord['objectclass'] = array("top","person","organizationalPerson","user");
$ldaprecord["sAMAccountName"] = $username;
//$ldaprecord["unicodepwd"] = $newPassw;
$ldaprecord["UserAccountControl"] = "544";
$r = ldap_add($ldap_conn, $dn, $ldaprecord);
//set password .. not sure if I need to base64 encode or not
$encodedPass = array('userpassword' => base64_encode($newPassw));
//$encodedPass = array('unicodepwd' => $newPassw);
echo "Change password ";
if(ldap_mod_replace ($ldap_conn, $dn, $encodedPass)){
echo "succeded";
}else{
echo "failed";
}
}
Es ist gewickelt ich ändern, wie ich näherte sich dieses Problem. Am Ende, stellte ich mir die Passwörter mithilfe einer LDIF-Skript.
InformationsquelleAutor compcentral | 2011-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur zwei Stücke von Beratung:
Afer, Sie können nur versuchen, zu bauen ein Zertifikat und installieren Sie es auf dem AD service-account, wie finden Sie es getan, mit ADAM.
InformationsquelleAutor JPBlanc
Haben Sie eine Zertifikatanforderung erstellen, die für die sichere Ldap-mit der richtigen OIDs?
hier meine inf-Datei:
SOLLTEN SIE EINE VORLAGE IN DER ZERTIFIZIERUNGSSTELLE MIT DEM 2003 (NICHT ALLE MICROSOFT-PRODUKTE NUTZEN KÖNNEN 2008 VORLAGEN-ICH WEIß, DUMM, HUH) KOPIEREN SIE AUS DEM DOMAIN-CONTROLLER UND WERFEN SIE DIE SPÜLE AN DER OIDS
InformationsquelleAutor JEFFREY
Nur Ihre Verbindung als Vertrauen alle. Dann wird es nicht mehr Zertifikate benötigen. Check-out
javax.net.sslTrustManager
.InformationsquelleAutor Raja Roy