LDAP Client and Server API for node.js
Go to file
Patrick Mooney acfaa69a07 Fix client RequestQueue
- Reference documented queue parameters
- Add freeze/thaw methods
2014-06-24 11:04:23 -05:00
bin Alter usage message style 2014-06-19 19:19:36 -05:00
deps Update jsstyle version 2014-06-16 09:31:12 -05:00
docs Major overhaul of client connection logic 2014-06-23 16:15:52 -05:00
examples Fix jsstyle errors in examples/inmemory.js 2013-10-23 21:56:26 -05:00
lib Fix client RequestQueue 2014-06-24 11:04:23 -05:00
test Cease reconnection when client.destroy is called 2014-06-24 05:45:06 -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 update 2014-01-17 10:21:11 -08:00
CHANGES.md Update changelog 2014-06-20 09:46:44 -05:00
LICENSE Initial working client/server version 2011-08-04 13:32:01 -07:00
Makefile Replace nopt with dashdash 2014-06-18 18:42:49 -05:00
README.md Moved badge under horizontal rule as requested 2013-10-25 13:59:39 +02:00
package.json Major overhaul of client connection logic 2014-06-23 16:15:52 -05:00

README.md

Ldapjs

'Build status'

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.