node >= 8.0
No jdapjs (https://www.npmjs.com/package/ldapjs) as dependency.
Why: because jdapjs is not maintained for more than two years.
npm install ldapjs-client
To create a new client:
varLdapClient=require('ldapjs-client');varclient=newLdapClient({url: 'ldap://127.0.0.1:389'});| Attribute | Type | Description |
|---|---|---|
| url | String | A valid LDAP URL (proto/host/port only) |
| timeout | Number | Milliseconds client should let operations live for before timing out (Default: Infinity) |
| tlsOptions | Object | Additional options passed to TLS connection layer when connecting via ldaps:// (See: The TLS docs for node.js) |
try{constentry={cn: 'foo',sn: 'bar',email: ['foo@bar.com','foo1@bar.com'],objectclass: 'fooPerson'};awaitclient.add('cn=foo, o=example',entry);}catch(e){console.log('Add failed');}try{awaitclient.bind('username','password');}catch(e){console.log('Bind failed');}try{awaitclient.del('cn=foo, o=example');}catch(e){console.log(e);}try{constchange={operation: 'add',// add, delete, replacemodification: {pets: ['cat','dog']}};awaitclient.modify('cn=foo, o=example',change);}catch(e){console.log(e);}try{awaitclient.modifyDN('cn=foo, o=example','cn=bar');}catch(e){console.log(e);}try{constoptions={filter: '(&(l=Seattle)(email=*@foo.com))',scope: 'sub',attributes: ['dn','sn','cn']};constentries=awaitclient.search('o=example',options);}catch(e){console.log(e);}| Attribute | Type | Description |
|---|---|---|
| scope | String | One of base, one, or sub. Defaults to base |
| filter | String | A string version of an LDAP filter. Defaults to (objectclass=*) |
| attributes | Array of String | attributes to select and return. Defaults to the empty set, which means all attributes |
| sizeLimit | Number | the maximum number of entries to return. Defaults to 0 (unlimited) |
| timeLimit | Number | the maximum amount of time the server should take in responding, in seconds. Defaults to 10. Lots of servers will ignore this |
| typesOnly | Boolean | on whether you want the server to only return the names of the attributes, and not their values. Borderline useless. Defaults to false |
try{awaitclient.unbind();}catch(e){console.log(e);}try{awaitclient.unbind();}catch(e){console.log(e);}Close connection if exists and destroy current client
Pull requests and suggestions are welcome!
MIT.