2013-10-25 11:59:39 +00:00
|
|
|
# Ldapjs
|
|
|
|
|
|
|
|
[!['Build status'][travis_image_url]][travis_page_url]
|
2013-10-25 07:32:50 +00:00
|
|
|
|
|
|
|
[travis_image_url]: https://api.travis-ci.org/mcavage/node-ldapjs.png
|
|
|
|
[travis_page_url]: https://travis-ci.org/mcavage/node-ldapjs
|
|
|
|
|
2011-08-25 04:46:31 +00:00
|
|
|
ldapjs makes the LDAP protocol a first class citizen in Node.js.
|
2011-08-15 20:50:15 +00:00
|
|
|
|
|
|
|
## 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(),
|
2011-11-10 18:15:26 +00:00
|
|
|
attributes: {
|
|
|
|
objectclass: ['organization', 'top'],
|
|
|
|
o: 'example'
|
|
|
|
}
|
2011-08-15 20:50:15 +00:00
|
|
|
};
|
|
|
|
|
2011-08-25 04:46:31 +00:00
|
|
|
if (req.filter.matches(obj.attributes))
|
2011-08-15 20:50:15 +00:00
|
|
|
res.send(obj);
|
|
|
|
|
|
|
|
res.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
server.listen(1389, function() {
|
|
|
|
console.log('ldapjs listening at ' + server.url);
|
|
|
|
});
|
|
|
|
|
2011-08-25 04:46:31 +00:00
|
|
|
To run that, assuming you've got the [OpenLDAP](http://www.openldap.org/) client
|
|
|
|
on your system:
|
2011-08-15 20:50:15 +00:00
|
|
|
|
2011-08-25 04:46:31 +00:00
|
|
|
ldapsearch -H ldap://localhost:1389 -x -b dc=example objectclass=*
|
2011-08-04 20:32:01 +00:00
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
2011-08-25 04:46:31 +00:00
|
|
|
npm install ldapjs
|
2013-01-15 20:19:20 +00:00
|
|
|
|
|
|
|
## 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.
|
2011-08-04 20:32:01 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
MIT.
|
|
|
|
|
|
|
|
## Bugs
|
|
|
|
|
|
|
|
See <https://github.com/mcavage/node-ldapjs/issues>.
|