Ich versuche ein Self-Service-Portal auf meinem OpenLDAP-Server zu erstellen, damit Benutzer ihren GECOS-Eintrag, ihre Telefonnummer usw. aktualisieren können. Sie werden ihr Kennwort NICHT nach Bedarf aktualisieren. Das Problem ist, dass ich keine Attribute im LDAP-Server aktualisieren kann. Ich verwende den PHP-Aufruf ldap_mod_replace
mit einem gültigen DN (der root administrative DN gerade), um diese Attribute zu aktualisieren. Der Fehler, den ich erhalten ist:Ich kann keine Attribute mit ldap_mod_replace ersetzen
(53) Server nicht bereit ist,
Die bind ist erfolgreich auf dem Server auszuführen. Mit demselben Bind-DN kann ich jedes Attribut, das ich verwenden möchte, mit einem Drittanbieter-Tool (JXplorer) aktualisieren. Hier
ist ein Schnipsel von der genauen Code, in dem die Aktualisierung durchgeführt wird, redigiert für den Schutz von IP:
function saveAccountData($connection, $dn, $newAcctData, $isAdmin = false) {
$permittedData = array();
$resp = ldap_bind($connection, "cn=rootdn,dc=domain,dc=tld", "reallygoodpassword");
if (!$resp) {
die("Failed to bind to LDAP with authenticated credentials! $resp\n");
}
if ($isAdmin) {
$permittedData = $newAcctData;
}
else {
$permittedData["homedirectory"] = $newAcctData["homeDirectory"];
$permittedData["gecos"] = $newAcctData["gecos"];
$permittedData["loginshell"] = $newAcctData["loginShell"];
$permittedData["telephonenumber"] = $newAcctData["telephoneNumber"];
}
return ldap_mod_replace($connection, $dn, $permittedData);
}
ich überprüfen, für die Fehler außerhalb nach Aufruf dieser Funktion, das ist, wie ich hier angekommen mit dem Fehler Botschaft.
ich in dieser Benutzeranleitung: http://www.openldap.org/doc/admin24/appendix-common-errors.html
ich die verschiedenen Themen überprüft haben, aber diese scheinen Active Directory anwenden: ldap_mod_replace() [function.ldap-mod-replace]: Modify: Server is unwilling to perform
Ich habe noch versucht, diese Lösungen, aber keine in Anspruch nehmen. Was läuft hier falsch?
Vielen Dank im Voraus!
Dies sind die restlichen Ressourcen, die ich auf mögliche Antworten überprüft habe: http://php.net/manual/en/function.ldap-mod-replace.php http://www.openldap.org /doc/admin24/appendix-common-errors.html http://www.learncomputer.com/php-ldap/ http://stackoverflow.com/questions/10763070/ldap-mod-replace-function-ldap- mod-replace-modify-server-is-unwilling-to-p http://stackoverflow.com/questions/31856996/php-ldap-ldap-mod-replace http://stackoverflow.com/questions/27230163/ warning-ldap-mod-replace-modify-server-is-unwilling-to-perform – kaiw
Meine Lektüre der PHP-Dokumentation ist, dass 'ldap_mod_replace' verwendet werden kann, um nur die Werte eines einzelnen Attributs zu ändern. Sie sollten 'ldap_modify' verwenden, um mehrere Attribute in einer einzelnen LDAP-Änderungsoperation zu aktualisieren. –
Das war genau das Problem! Ich hatte das Handbuch für "ldap_modify" falsch gelesen und dachte, dass ich einen Eintrag suchen müsste, anstatt einfach einen DN mit einigen aktualisierten Parametern zu übergeben. Vielen Dank! – kaiw