LDAP Client and Server API for node.js
Go to file
Patrick Mooney 0d12eef3ff Improve DN formatting flexibility
- Add 'spaced' function to DN objects allowing toggle of inter-RDN when
  rendering to a string.  ('dc=test,dc=tld' vs 'dc=test, dc=tld')

- Detect RDN spacing when parsing DN.
2013-10-24 18:27:42 -05: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 Fix jsstyle errors in examples/inmemory.js 2013-10-23 21:56:26 -05:00
lib Improve DN formatting flexibility 2013-10-24 18:27:42 -05:00
test Improve DN formatting flexibility 2013-10-24 18:27:42 -05: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 Bump required tap version to 0.4.1 2013-10-16 20:34:52 -05: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.