Since LDAP is an open standard protocol, all of the information needed to create an LDAPv3-compliant server is freely available (see the LDAP Reference Materials for links to the relevant documents). As such, there are several available types of directory servers. Some of the most notable implementations are listed below:


Editor’s note: I am one of the creators of the Ping Identity Directory Server (formerly UnboundID Directory Server) and have been its lead developer since its creation. Since I would obviously be biased, and since I want this site to be as neutral as possible to promote the use of LDAP in general, I will avoid any attempt at ranking or assessing the quality of any of these implementations. Instead, they will be listed in alphabetical order.

If you have any suggestions for other directory servers to include on this page, please email them to feedback@ldap.com.

Traditional LDAP Directory Servers

LDAP directory servers that you can run yourself, on your own equipment or in the cloud:

  • Symas OpenLDAP (an enhanced version of OpenLDAP with available commercial support)

 

Hosted LDAP Directory Services

LDAP directory servers that someone else will run for you:

  • PingCloud (backed by Ping Identity Directory Server)

 

Integrated Suites Containing Directory Servers

The following integrated suites include a directory server as part of a larger solution.

  • FreeIPA (backed by 389 Directory Server)

 

Embeddable and Testing-Friendly LDAP Servers

If you’re developing an LDAP-enabled application and wish to have access to a directory server for use in your testing framework, it may be helpful to use a library designed for this purpose. Some of these options include:

  • Go
    • GLAuth can be used as a simple LDAP server for testing purposes.
  • Java and Other JVM-Based Languages
    • ApacheDS can be run in embedded mode
    • embedded-ldap-junit — A library that can simplify LDAP-related testing in JUnit (uses the UnboundID LDAP SDK for Java behind the scenes)
    • UnboundID LDAP SDK for Java provides an in-memory directory server and an LDAP listener framework. It also provides an LDAPTestUtils class to help facilitate unit testing
  • JavaScript
    • ldapjs provides a framework for acting as an LDAP server
  • Python
    • python-ldap-test provides a Python framework for programatically creating an in-memory LDAP server (uses the UnboundID LDAP SDK for Java behind the scenes)

Further, there are directory servers available for specialized use cases. Some of those include:

  • LDAP Swiss Army Knife — A simple LDAP server designed for LDAP-related security and penetration testing.

 

Limited-Functionality LDAP Servers

There are some applications that are typically meant for storing or interacting with identity-related information (like users and groups) that provide some level of LDAP access to that data, but that do not provide full LDAP functionality. For example, they may be read-only, offer little or no support for custom schema or arbitrary entry types, may behave in non-standards-compliant ways, etc. These are not general-purpose directory servers, but may be capable of supporting some kinds of clients with very limited needs.