【问题标题】:ldap nodejs active directory authenticationldap nodejs 活动目录认证
【发布时间】:2012-07-11 16:36:12
【问题描述】:

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

【问题讨论】:

    标签: node.js authentication active-directory ldap


    【解决方案1】:

    我使用了 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] 和 ARGV1。 您可以使用回调函数在 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.
    

    希望这会有所帮助!

    【讨论】:

    • 如果您可以编辑此答案以包含有关您使用的解决方案的更多信息/链接/代码,那就太好了,这样可以帮助可能遇到此问题的其他人。
    【解决方案2】:

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

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

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

    【讨论】:

    • github.com/mcavage/node-ldapjs/issues/81 是提到Windows上安装问题的问题。
    • 所以我的代码的 sn-p 看起来就像 ldapauth 库 github.com/trentm/node-ldapauth 几乎使用了示例代码
    • 如果我 console.log(ldap) 我得到类似这样的返回连接:{ pair: [Object], writable: true, readable: true, _paused: false, _needDrain: false, _pending: [], _pendingCallbacks: [], _pendingBytes: 0, socket: [Object], encrypted: [Object], 以此类推
    • 但是,当我调用 ldap.authenticate 时没有任何反应,这让我认为它可能不适用于活动目录。在我的情况下,Active Directory 服务器已经设置了目录中的所有用户信息,所以我真的没有选择更改我正在运行的 LDAP 的类型,因为它是一个公司 Active Directory
    【解决方案3】:

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2012-03-04
      • 2011-12-15
      • 1970-01-01
      • 2011-06-04
      相关资源
      最近更新 更多