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:
server | Reference for implementing LDAP servers. |
client | Reference for implementing LDAP clients. |
dn | API reference for the DN class. |
filters | API reference for LDAP search filters. |
errors | Listing of all ldapjs Error objects. |
examples | Collection of sample/getting started code. |
More information
License | MIT |
Code | mcavage/node-ldapjs |
node.js version | 0.4.x and 0.5.x |
@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:
- Referrals
- 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.