2012-07-11 24 views
9

Ich arbeite derzeit an einer Webanwendung in node.js, in der sich ein Benutzer anmelden muss, um auf die Informationen zuzugreifen. Ich möchte den Benutzernamen und das Passwort mit einem externen Active Directory-Server überprüfen. Ich habe versucht, node-ldapauth, aber ich kann es nicht funktionieren (Ich weiß nicht, ob es für aktive Verzeichnisse funktioniert, vielleicht nur openLdap). Irgendwelche Vorschläge?ldap nodejs Active Directory-Authentifizierung

Antwort

4

Ich habe eine Rubyldap-Bibliothek verwendet, um das Problem zu lösen, danke!

Update: angefordert Da es sich um die Bibliothek ich das Problem https://github.com/ruby-ldap/ruby-net-ldap/

Nach der Installation der Ruby-Bibliothek auf dem Server, mit gem install (schauen Sie es nicht zu schwer ist) zu lösen verwendet

require 'rubygems' 
    require 'net/ldap' 

    ldap = Net::LDAP.new :host => server_ip_address, 
     :port => 389, 
     :auth => { 
      :method => :simple, 
      :username => "cn=manager, dc=example, dc=com", 
      :password => "opensesame" 
     } 

    filter = Net::LDAP::Filter.eq("cn", "George*") 
    treebase = "dc=example, dc=com" 

    ldap.search(:base => treebase, :filter => filter) do |entry| 
    puts "DN: #{entry.dn}" 
    entry.each do |attribute, values| 
     puts " #{attribute}:" 
     values.each do |value| 
     puts "  --->#{value}" 
     end 
    end 
    end 

    p ldap.get_operation_result 

Richten Sie eine Ruby-Datei wie oben gezeigt ein.

Sie können die Ruby-Bibliothek laufen

unter Verwendung
var ldap = 'ruby '+process.cwd()+'/src/ruby/ruby_file_name '+ user+' '+password; 

der Benutzer und Passwort in Ruby greifen 1 ARGV [0] und ARGV verwenden. können Sie greifen das Rubin Ergebnis in node.js zurück einen Anruf unter Verwendung von Back-Funktion

var result = exec(ldap, theCallBack); 

in der theCallBack Funktion können Sie die zurück ruby ​​Bibliothek Ergebnisse greifen durch

in stdout vorbei

ex:

function theCallBack(err,stdout) { 
    ----your code here, stdout is what you PUT in the ruby library. 

Hoffe, das hilft!

+1

handelt toll, wenn Sie diese Antwort bearbeiten könnten, um weitere Informationen/Links/Code über die von Ihnen verwendete Lösung zu erhalten, damit sie anderen helfen können, die dieses Problem haben könnten. – Dhaust

+1

Ich habe meine Lösung wie gewünscht aktualisiert – Denis

+0

Ausgezeichnet, danke dafür. – Dhaust

0

Könnten Sie das Snipet Ihres Codes und den Fehler, den Sie erhalten, posten?

Ich versuche, das ähnliche zu tun und stieß auf die ldapjs Bibliothek. Es ermöglicht Ihnen, eine Client-LDAP-Verbindung zu einem LDAP-Server zu implementieren, und Sie können die Verbindung Benutzername und Kennwort der Benutzer überprüfen.

Ich habe versucht, es auf Windows mit 0.8.2 und lief auf einige Probleme, die es klingt, wie der Entwickler sucht in. Der nette Aspekt dieser Bibliothek ist, dass sie nicht auf die OpenLDAP-Bindung angewiesen ist, auf die die von Ihnen referenzierte Bindung angewendet wird.

+0

https://github.com/mcavage/node-ldapjs/issues/81 ist das Problem, das Installationsproblem unter Windows erwähnt. – Christophe

+0

Also ein Ausschnitt meines Codes sieht genauso aus wie die ldapauth libary https://github.com/trentm/node-ldapauth ziemlich viel verwendet den Beispielcode – Denis

+0

Wenn ich trete.log (ldap) i so etwas wie dieses erhalten im Gegenzug Verbindung: {Paar: [Object], beschreibbar: true, lesbar: true, _paused: false, _needDrain: false, _pending: [], _pendingCallbacks: [], _pendingBytes: 0, socket: [Objekt], verschlüsselt: [Objekt], so weiter und so weiter – Denis

Verwandte Themen