2012-07-11 34 views
9

Tôi hiện đang làm việc trên một ứng dụng web trong node.js mà người dùng cần đăng nhập để truy cập thông tin. Tôi muốn kiểm tra đăng nhập và mật khẩu người dùng với một máy chủ thư mục hoạt động bên ngoài. Tôi đã thử bằng cách sử dụng nút-ldapauth, nhưng tôi không thể làm cho nó hoạt động (Tôi không biết nếu nó hoạt động cho các thư mục hoạt động, có thể chỉ cần openLdap). Bất kỳ đề xuất?ldap nodejs xác thực thư mục hoạt động

Trả lời

4

Tôi đã sử dụng thư viện rubyldap để giải quyết vấn đề!

Cập nhật: Theo yêu cầu này là thư viện tôi sử dụng để giải quyết vấn đề https://github.com/ruby-ldap/ruby-net-ldap/

Sau khi cài đặt thư viện ruby ​​trên máy chủ của bạn, sử dụng gem install (nhìn nó lên nó không phải là quá khó)

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 

Thiết lập một tệp ruby ​​như minh họa ở trên.

Bạn có thể chạy các thư viện ruby ​​bằng cách sử dụng

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

Để lấy người sử dụng và mật khẩu trong ruby ​​sử dụng argv [0] và argv 1. Bạn có thể lấy các ruby ​​trở lại kết quả trong Node.js bằng cách sử dụng một cuộc gọi trở lại chức năng

var result = exec(ldap, theCallBack); 

trong hàm theCallBack bạn có thể lấy kết quả thư viện ruby ​​trở bằng cách đi qua trong stdout

ví dụ:

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

Hy vọng điều này sẽ hữu ích!

+1

Nó sẽ là tuyệt vời nếu bạn có thể chỉnh sửa câu trả lời này để bao gồm một số thông tin/liên kết/mã về giải pháp bạn đã sử dụng để nó có thể giúp những người khác có thể gặp sự cố này. – Dhaust

+1

Tôi đã cập nhật giải pháp của mình theo yêu cầu – Denis

+0

Tuyệt vời, cảm ơn vì điều đó. – Dhaust

0

Bạn có thể đăng snipet mã của mình và lỗi bạn nhận được không?

Tôi đang cố gắng thực hiện tương tự và đi qua thư viện ldapjs. Nó cho phép bạn thực hiện kết nối khách hàng ldap với máy chủ LDAP và bạn có thể, khi thực hiện kết nối xác thực tên người dùng và mật khẩu.

Tôi đã cố gắng thiết lập nó trên cửa sổ với 0.8.2 và gặp phải một số vấn đề mà có vẻ như nhà phát triển đang tìm kiếm. Các khía cạnh tốt đẹp của thư viện này là nó không dựa vào các ràng buộc OpenLDAP rằng một trong những bạn tham chiếu không.

+0

https://github.com/mcavage/node-ldapjs/issues/81 là sự cố đã đề cập đến sự cố cài đặt trên Windows. – Christophe

+0

Vì vậy, một đoạn mã của tôi trông giống như thư viện ldapauth lib2 https://github.com/trentm/node-ldapauth khá nhiều được sử dụng mã ví dụ – Denis

+0

Nếu tôi điều khiển.log (ldap) tôi nhận được một cái gì đó như thế này để đổi lại kết nối: {cặp: [Object], ghi: đúng, có thể đọc được: đúng, _paused: false, _needDrain: false, _pending: [], _pendingCallbacks: [], _pendingBytes: 0, ổ cắm: [Object], được mã hóa: [Object], v.v. – Denis

Các vấn đề liên quan