LDAP Client and Server API for node.js
Go to file
Patrick Mooney 8f1eb06ffa Perform strict presence testing on attribute vals
When initializing an Attribute object, the 'vals' option field was being
loosely tested for content presence.  By changing this test to a strict
comparison against undefined, Attribute object creation will be more
consistent across input values.

Fix mcavage/node-ldapjs#178
2014-05-11 20:38:37 -05:00
bin add '-i, --insecure' option and LDAPJS_TLS_INSECURE=1 envvar support to all ldapjs-* CLIs 2014-04-22 17:46:16 -07: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 Perform strict presence testing on attribute vals 2014-05-11 20:38:37 -05:00
test Update Filter utility functions 2013-11-30 23:31:15 -06: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
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 Moved badge under horizontal rule as requested 2013-10-25 13:59:39 +02:00
package.json v0.7.1 2014-04-04 14:14:18 -07: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.