2012-07-11 63 views
9

Actualmente estoy trabajando en una aplicación web en node.js en la cual un usuario necesita iniciar sesión para acceder a la información. Quiero verificar el nombre de usuario y la contraseña con un servidor de directorio activo externo. He intentado usar node-ldapauth, pero no puedo hacer que funcione (no sé si funciona para directorios activos, tal vez simplemente openLdap). ¿Alguna sugerencia?ldap nodejs active directory authentication

Respuesta

4

Utilicé una biblioteca de rubyldap para resolver el problema, gracias.

Actualización: Como pedido este es la biblioteca solía resolver el problema https://github.com/ruby-ldap/ruby-net-ldap/

Después de instalar la biblioteca de rubí en su servidor, usando joya instalar (mirar hacia arriba no es demasiado dura)

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 

Configura un archivo ruby ​​como se muestra arriba.

puede ejecutar la librería Ruby utilizando

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

Para hacerse con el usuario y contraseña en el rubí utilizan ARGV [0] y ARGV 1. Usted puede agarrar el rubí regresó resultado en Node.js mediante una llamada a la función de devolución

var result = exec(ldap, theCallBack); 

en la función theCallBack se puede agarrar los resultados devueltos por la biblioteca de rubí que pasa en la salida estándar

ejemplo:

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

Espero que esto ayude!

+1

Sería genial si pudieras editar esta respuesta para incluir más información/enlaces/códigos sobre la solución que utilizaste para que pueda ayudar a otros que puedan tener este problema. – Dhaust

+1

Actualicé mi solución según lo solicitado – Denis

+0

Excelente, gracias por eso. – Dhaust

0

¿Podría publicar el snipet de su código y el error que obtiene?

Estoy tratando de hacer lo mismo y encontré la biblioteca ldapjs. Le permite implementar una conexión ldap de cliente a un servidor LDAP y puede, al hacer la conexión, validar el nombre de usuario y la contraseña del usuario.

Intenté configurarlo en Windows con 0.8.2 y me encontré con algunos problemas, que parece que el desarrollador está buscando. El aspecto agradable de esta biblioteca es que no depende del enlace de OpenLDAP que hace el que usted mencionó.

+0

https://github.com/mcavage/node-ldapjs/issues/81 es el problema mencionado el problema de instalación en Windows. – Christophe

+0

Por lo tanto, un fragmento de mi código se ve igual que la librería ldapauth https://github.com/trentm/node-ldapauth prácticamente usé el código de ejemplo – Denis

+0

If I console.log (LDAP) me sale algo como esto a cambio conexión: {par: [Objeto], permisos de escritura: verdad, legible: true, _paused: falso, _needDrain: falso, _pending: [], _pendingCallbacks: [], _pendingBytes: 0, socket: [Object], encrypted: [Object], y así sucesivamente – Denis

Cuestiones relacionadas