ldap

LDAP client library using winldap on windows and openldap on other platforms


Keywords
library, database, network, web, auth, active-directory, d, ldap, openldap
License
MIT
Install
dub fetch ldap --version 0.4.0

Documentation

ldap

Cross platform Microsoft Active Directory client using LDAP (winldap on windows, openldap otherwise).


For secure LDAP authentication you will want to use ldapauth instead.


Openldap implementation based off dopenldap

import std.stdio;

int proto_version;

auto ldap = LDAPConnection("127.0.0.1:389"); // normal ldap connection
auto auther = LDAPAuthenticationEngine("127.0.0.1:389"); // ldap connection with fast binding and no encryption support on windows (used for password authentication)
ldap.getOption(LDAP_OPT_PROTOCOL_VERSION, &proto_version);
if (proto_version == 2)
{
	proto_version = 3;
	ldap.setOption(LDAP_OPT_PROTOCOL_VERSION, &proto_version);
	writeln("Switched to protocol version 3");
}

ldap.bind("admin@localhost", "");

auto arr = ldap.search("OU=data,DC=data,DC=local",
		LDAPSearchScope.subTree, "(|(objectClass=contact)(objectClass=user))", ["l"]); // find all users & contacts

writefln("Found %s results", arr.length);
foreach (r; arr)
{
	writeln(r.distinguishedName); // print path of contact
	foreach (k, v; r.attributes)
	{
		writef("%s = %s", k, v); // prints location of contacts (because of ["l"] argument above)
	}
}
writeln("Done");

assert(!auther.check("non valid user", "non valid password"));
assert(auther.check("admin", ""));