Ä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";
    }
}
Hey, wollte nur wissen, ob dies war für Sie am Ende und was Sie zu tun hatte. Ich habe sehr ähnliche Probleme. Hast du nur neu starten, die windows-server?
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

Schreibe einen Kommentar