Reimagining LDAP for Node.js

Overview

ldapjs is a pure JavaScript, from-scratch framework for implementing LDAP clients and servers in Node.js. It is intended for developers used to interacting with HTTP services in node and express.

var ldap = require('ldapjs');

var server = ldap.createServer();

server.search('o=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('LDAP server listening at %s', server.url);
});

Try hitting that with:

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

Features

ldapjs implements most of the common operations in the LDAP v3 RFC(s), for both client and server. It is 100% wire-compatible with the LDAP protocol itself, and is interoperable with OpenLDAP and any other LDAPv3-compliant implementation. ldapjs gives you a powerful routing and "intercepting filter" pattern for implementing server(s). It is intended that you can build LDAP over anything you want, not just traditional databases.

Getting started

npm install ldapjs

If you're new to LDAP, check out the guide. Otherwise, the API documentation is:

serverReference for implementing LDAP servers.
clientReference for implementing LDAP clients.
dnAPI reference for the DN class.
filtersAPI reference for LDAP search filters.
errorsListing of all ldapjs Error objects.
examplesCollection of sample/getting started code.

More information

LicenseMIT
Codemcavage/node-ldapjs
node.js version>=0.6
Twitter@mcavage

What's not in the box?

Since most developers and system(s) adminstrators struggle with some of the esoteric features of LDAP, not all features in LDAP are implemented here. Specifically:

  • LDIF
  • Aliases
  • Attributes by OID
  • TLS extended operation (seriously, just use SSL)
  • Extensible matching

There are a few others, but those are the "big" ones.