1. 程式人生 > >node.js下LDAP查詢實踐

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