2012-07-11 21 views
9

Aktualnie pracuję nad aplikacją internetową w węźle node.js, w której użytkownik musi się zalogować, aby uzyskać dostęp do informacji. Chcę sprawdzić login użytkownika i hasło za pomocą zewnętrznego aktywnego serwera katalogów. Próbowałem przy użyciu węzła ldapauth, ale nie mogę go uruchomić (nie wiem, czy działa dla aktywnych katalogów, może po prostu openLdap). Jakieś sugestie?Uwierzytelnianie aktywnego katalogu ldap nodejs

Odpowiedz

4

Użyłem biblioteki ruby, aby rozwiązać problem dzięki!

Aktualizacja: Zgodnie z wnioskiem jest to biblioteka użyłem, aby rozwiązać problem https://github.com/ruby-ldap/ruby-net-ldap/

Po zainstalowaniu biblioteki ruby ​​na serwerze, używając gem install (szukać go nie jest to zbyt trudne)

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 

Skonfiguruj plik ruby, jak pokazano powyżej.

można uruchomić biblioteki ruby ​​za pomocą

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

chwycić i hasło użytkownika w ruby ​​używać argv [0] i ARGV 1. można pobrać rubin zwrócony wynik w node.js przy użyciu funkcji oddzwaniania

var result = exec(ldap, theCallBack); 

w funkcji theCallBack można chwycić zwróconych wyników bibliotecznych rubin przepuszczając stdout

ex:

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

Mam nadzieję, że to pomoże!

+1

Świetne, jeśli możesz edytować tę odpowiedź, dodając trochę informacji/linków/kodu o rozwiązaniu, którego użyłeś, aby pomóc innym, którzy mogą mieć ten problem. – Dhaust

+1

Zaktualizowałem moje rozwiązanie na żądanie – Denis

+0

Doskonale, dzięki za to. – Dhaust

0

Czy możesz opublikować snipet swojego kodu i błąd, który otrzymasz?

Próbuję zrobić podobne i natknąłem się na bibliotekę ldapjs. Pozwala to zaimplementować połączenie klienta LDAP z serwerem LDAP i podczas wykonywania połączenia można zweryfikować nazwę użytkownika i hasło.

Próbowałem ustawić go w oknach z 0.8.2 i wpadłem w pewne problemy, co brzmi jak programista szuka. Miłym aspektem tej biblioteki jest to, że nie polega ona na powiązaniu OpenLDAP, z którym się odwołuje.

+0

https://github.com/mcavage/node-ldapjs/issues/81 jest problemem, o którym wspomniał problem z instalacją w systemie Windows. – Christophe

+0

Więc fragment kodu wygląda jak ldapauth libary https://github.com/trentm/node-ldapauth prawie użył kodu przykładowego – Denis

+0

Jeśli konsola.log (LDAP) i dostać coś takiego w zamian gra: {pary: [Obiekt] zapisu: prawda, czytelny: true, _paused: false, _needDrain: false, _pending: [], _pendingCallbacks: [], _pendingBytes: 0, gniazdo: [object] szyfrowane: [object] tak dalej i tak dalej – Denis

Powiązane problemy