2016-03-21 13 views
0

Ich versuche gerade ein Passwort eines ldap Accounts mit Ruby zu ändern. Da ich zuvor OpenDJ und Java benutzt habe, war es möglich, eine Passwortänderungsanfrage auszulösen, die nur das neue Passwort als Klartext erhielt, aber am Ende wurde es als verschlüsseltes Passwort unter Verwendung der in den OpenLDAP-Optionen eingestellten Funktion gesetzt.ldap Passwort ändern, ohne die Hash Funktion zu kennen

Aber mit Ruby habe ich nur herausgefunden, wie man das Passwort-Attribut direkt ändern kann.

Kann ich das gleiche mit Ruby machen, was ich in Java mit OpenDJ mache?

Antwort

0

Der Vorgang zum Ändern eines Kennworts in OpenDJ ist ein LDAP-Vorgang und unabhängig von der Sprache, die Sie auf der Clientseite verwenden. Also ja, Sie sollten das gleiche mit Ruby und Java machen können. Wie man es in Ruby macht, hängt von der LDAP-Unterstützung und -Bibliothek in Ruby ab, und es tut mir leid, dass ich keine Erfahrung damit habe.

+0

Danke, können Sie darauf hinweisen, welche „unabhängiger Betrieb“ von OpenDJ verwendet wird? –

+0

Sie können ein Kennwort mithilfe der LDAP-Änderungsoperation ändern (indem Sie das Attribut userPassword ersetzen) oder den erweiterten LDAP-Kennwortänderungsvorgang verwenden. –

+0

Ja, danke! Ich habe nach der verlängerten Operation gesucht. Einige Bibliotheken verwenden es automatisch, wenn Sie versuchen, userPassword zu ändern, net-ldap jedoch nicht. Aber jetzt funktioniert es! –

0

Wenn Sie die ruby-ldap gem der folgende Code verwenden sollte funktionieren:

modifications = [ 
    LDAP.mod(LDAP::LDAP_MOD_REPLACE, 'userPassword', ['cleartextpassword']), 
] 

begin 
    conn.modify("uid=jdoe, dc=example, dc=com", modifications) 
rescue LDAP::ResultError 
    exit 
end 
+0

Ich werde es heute testen. Kann ich das gleiche mit "net/ldap" machen, ich meine, wenn es eine LDAP-spezifische Operation ist, sollte es möglich sein, oder? –

+0

Ja, es handelt sich um eine standardmäßige LDAP-Änderungsoperation, daher sollte dieselbe Vorgehensweise unabhängig von der verwendeten Clientbibliothek funktionieren. –

+0

Ich verwende net/ldap und modifiziere/ersetze es aber immer als reinen Text. 'wenn ldap.bind Operationen = [[ : ersetzen, : userpassword, [LDAP_PASSWORD_NEW $] ]] ldap.modify: dn => $ LDAP_USER, : Operationen => operations' –