zoukankan      html  css  js  c++  java
  • node.js下LDAP查询实践

    目标:

    从一个LDAP Server获取uid=kxh的用户数据

    LDAP地址为:ldap://10.233.21.116:389

    在工程根目录中,先npm一个LDAP的访问库ldpajs

    npm install ldapjs

    在工程根目录中,创建一个app.js

    var ldap =  require("ldapjs");
    
    
    //创建LDAP client,把服务器url传入
    var client = ldap.createClient({
      url: 'ldap://10.203.24.216:389'
    });
    
    //创建LDAP查询选项
    //filter的作用就是相当于SQL的条件
    var opts = {
      filter: '(uid=kxh)', //查询条件过滤器,查找uid=kxh的用户节点
      scope: 'sub',        //查询范围
      timeLimit: 500       //查询超时
    };
    
    //将client绑定LDAP Server
    //第一个参数:是用户,必须是从根节点到用户节点的全路径
    //第二个参数:用户密码
    client.bind('uid=supbind,cn=users,dc=tiger,dc=com', '123456', function (err, res1) {
    
        //开始查询
        //第一个参数:查询基础路径,代表在查询用户信心将在这个路径下进行,这个路径是由根节开始
        //第二个参数:查询选项
        client.search('DC=tiger,DC=com', opts, function (err, res2) {
    
            //查询结果事件响应
            res2.on('searchEntry', function (entry) {
                
                //获取查询的对象
                var user = entry.object;
                var userText = JSON.stringify(user,null,2);
                console.log(userText);
                
            });
            
            res2.on('searchReference', function(referral) {
                console.log('referral: ' + referral.uris.join());
            });    
            
            //查询错误事件
            res2.on('error', function(err) {
                console.error('error: ' + err.message);
                //unbind操作,必须要做
                client.unbind();
            });
            
            //查询结束
            res2.on('end', function(result) {
                console.log('search status: ' + result.status);
                //unbind操作,必须要做
                client.unbind();
            });        
            
        });
        
    });

    参考:

    filter语法:http://www.ldapexplorer.com/en/manual/109010000-ldap-filter-syntax.htm

    ldapjs:https://www.npmjs.com/package/ldapjs

  • 相关阅读:
    杭电 2546 饭卡 (01背包问题)
    杭电2602 Bone Collector
    01背包问题的详细概述
    杭电1003 最大子串(第二次AC) 当作DP的训练吧
    杭电1087 Super Jumping! Jumping! Jumping!(初见DP)
    Virtualenv虚拟环境的创建、激活、及退出
    修改maven本地仓库路径
    PPT如何去除背景音乐(史上最全方案)
    NVIDIA显卡驱动安装步骤
    Python之NumPy(axis=0 与axis=1)区分
  • 原文地址:https://www.cnblogs.com/kongxianghai/p/4847265.html
Copyright © 2011-2022 走看看