9

我目前正在使用 node.js 中的 Web 应用程序,用户需要登录才能访问信息。我想使用外部活动目录服务器检查用户登录名和密码。我试过使用node-ldapauth,但我无法让它工作(我不知道它是否适用于活动目录,也许只是openLdap)。有什么建议么?

4

3 回答 3

4

我使用了 ruby​​ldap 库来解决问题,谢谢!

更新:根据要求,这是我用来解决问题的库https://github.com/ruby-ldap/ruby-net-ldap/

在您的服务器上安装 ruby​​ 库后,使用 gem install (查找它并不太难)

 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

如上所示设置一个 ruby​​ 文件。

您可以使用运行 ruby​​ 库

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

要在 ruby​​ 中获取用户名和密码,请使用 ARGV[0] 和 ARGV 1。您可以使用回调函数在 node.js 中获取 ruby​​ 返回的结果

var result = exec(ldap, theCallBack);

在 theCallBack 函数中,您可以通过传入 stdout 来获取返回的 ruby​​ 库结果

前任:

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

希望这可以帮助!

于 2012-07-26T21:14:24.910 回答
0

你能发布你的代码片段和你得到的错误吗?

我正在尝试做类似的事情并遇到了ldapjs库。它允许您实现到 LDAP 服务器的客户端 ldap 连接,并且您可以在连接时验证用户的用户名和密码。

我尝试在 0.8.2 的 Windows 上设置它并遇到了一些问题,这听起来像是开发人员正在寻找的。这个库的优点是它不依赖于您引用的 OpenLDAP 绑定。

于 2012-07-18T17:39:13.093 回答
0

为了在 Windows 上安装 ldapjs,我编写了我在此处遵循的步骤http://tochedev.blogspot.be/2012/07/i-wanted-to-add-ldapjs-to-my-windows.html

希望这可以帮助。

于 2012-07-25T06:55:48.817 回答