LDAP Client and Server API for node.js
Go to file
Pedro P. Candel 4097a777e9 Upgrading pooling version due to bunyan update 2013-04-30 20:35:38 +02:00
bin We rather replace log4js with bunyan for binaries 2013-04-24 20:45:19 +02:00
deps lint/style cleanup and build support updates 2012-09-20 19:38:46 +00:00
docs Allow changing TLS connection options in client 2013-03-15 13:23:43 +01:00
examples Client refactor, with pooled client (minor lint cleanup as well) 2012-04-26 20:23:43 -07:00
lib remove listeners on the right object (s/client/res/) 2013-04-30 21:16:45 +03:00
test filter parsing not catching (() 2013-02-07 18:16:40 +00:00
tools lint/style cleanup and build support updates 2012-09-20 19:38:46 +00:00
.dir-locals.el Initial setup for 0.5 (use eng.git layout) 2012-02-18 08:15:52 +00:00
.gitignore Merge branch 'master' of git://github.com/DenisVuyka/node-ldapjs into DenisVuyka-master 2013-01-30 23:50:48 +00:00
.gitmodules Initial setup for 0.5 (use eng.git layout) 2012-02-18 08:15:52 +00:00
.npmignore npm ignore 2013-01-29 18:39:41 +00:00
.travis.yml travis broken 2012-02-18 08:26:50 +00:00
LICENSE Initial working client/server version 2011-08-04 13:32:01 -07:00
Makefile #109: escape filter attribute/values only in toString() 2013-01-11 11:01:51 +01:00
README.md Added objectGUID formatting support 2013-01-15 22:19:20 +02:00
package.json Upgrading pooling version due to bunyan update 2013-04-30 20:35:38 +02:00

README.md

ldapjs makes the LDAP protocol a first class citizen in Node.js.

Usage

For full docs, head on over to http://ldapjs.org.

var ldap = require('ldapjs');

var server = ldap.createServer();

server.search('dc=example', function(req, res, next) {
  var obj = {
    dn: req.dn.toString(),
    attributes: {
      objectclass: ['organization', 'top'],
          o: 'example'
    }
  };

  if (req.filter.matches(obj.attributes))
    res.send(obj);

  res.end();
});

server.listen(1389, function() {
  console.log('ldapjs listening at ' + server.url);
});

To run that, assuming you've got the OpenLDAP client on your system:

ldapsearch -H ldap://localhost:1389 -x -b dc=example objectclass=*

Installation

npm install ldapjs

Formatting objectGUID attribute value

var ldap = require('ldapjs');

ldap.Attribute.settings.guid_format = ldap.GUID_FORMAT_B;

var client = ldap.createClient({
  url: 'ldap://127.0.0.1/CN=test,OU=Development,DC=Home'
});

var opts = {
  filter: '(objectclass=user)',
  scope: 'sub',
  attributes: ['objectGUID']
};

client.bind('username', 'password', function (err) {
  client.search('CN=test,OU=Development,DC=Home', opts, function (err, search) {
    search.on('searchEntry', function (entry) {
      var user = entry.object;
      console.log(user.objectGUID);
    });
  });
});

Note: for the sake of simplicity all checks and error handling was removed from the sample above.

The console output may be similar to the following (depending on the amount of users in the directory):

{a7667bb1-4aee-48ce-9d9d-a1193550deba}
{8d642ac8-14c6-4f27-ac5-94d39833da88}

Available formatting modes:

GUID_FORMAT_N
    N specifier, 32 digits:
    00000000000000000000000000000000
GUID_FORMAT_D
    D specifier, 32 digits separated by hypens:
    00000000-0000-0000-0000-000000000000
GUID_FORMAT_B
    B specifier, 32 digits separated by hyphens, enclosed in braces:
    {00000000-0000-0000-0000-000000000000}
GUID_FORMAT_P
    P speficier, 32 digits separated by hyphens, enclosed in parentheses:
    (00000000-0000-0000-0000-000000000000)
GUID_FORMAT_X
    X speficier, four hexadecimal values enclosed in braces,
    where the fourth value is a subset of eight hexadecimal values that is also enclosed in braces:
    {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}

Guid formatting is unobtrusive by default. You should explicitly define formatting mode in order to enable it.

License

MIT.

Bugs

See https://github.com/mcavage/node-ldapjs/issues.