LDAP Client and Server API for node.js
Go to file
Patrick Mooney f3e376d40b Alter presence testing for Attribute vals
Ignoring a null 'vals' options while constructing a new Attribute object
will more closely mimic the behavior prior to mcavage/node-ldapjs#178.
2014-06-23 13:37:35 -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 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 Alter presence testing for Attribute vals 2014-06-23 13:37:35 -05:00
test Use plans instead of timeouts for server tests 2014-06-16 09:40:07 -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 Replace nopt with dashdash 2014-06-18 18:42:49 -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.