The Lightweight Directory Access Protocol (LDAP) specification was ratified in July 1993, in RFC 1487. Its inventors at the University of Michigan originally created it as a complement to the heavier-weight DAP X.500 protocol. At first, the LDAP designers just wanted a simple gateway interface to X.500 for the TCP/IP protocol that was easy to implement and program against. The idea was that the LDAP server component would translate LDAP calls into their corresponding DAP X.500 calls, and would translate the X.500 server responses back into LDAP for the client.
However, with the explosive growth of TCP/IP and Internet technologies in the 1990s, the new protocol took on a life of its own. The divergence from X.500 began when LDAP gained its own database and structuring conventions and became a directory specification on its own. Much as LDAP was created to simplify access to X.500, implementers began to realize that simplifying deployment of X.500 held a lot to be desired as well. Directories that supported an LDAP interface but did not support the entire X.500 specification began to appear. This is what we largely see today, with the majority of directory products in the marketplace supporting LDAP, but only small parts of the complete X.500 specification. Since this book is primarily about LDAP and .NET, this is the last you will hear of X.500 from us.
LDAP was revised several more times under RFC 17771779 in 1995 (LDAP version 2) and RFC 22512256 in 1997 (LDAP version 3). We are primarily concerned with LDAP version 3 today. It is interesting to note that LDAP version 3 was never formally approved, but exists today as a recommendation and de facto standard of sorts. As you can imagine, this has led to some bickering within the industry, with some of Microsoft's implementation decisions for Active Directory being the target of this criticism. However, this book is all about practicality and these distinctions rarely prevent us from getting real work done. We will leave most of that criticism for the academics to grapple with.
Much of the rest of this chapter explores the basic concepts of LDAP.
Part I: Fundamentals
Introduction to LDAP and Active Directory
Introduction to .NET Directory Services Programming
Binding and CRUD Operations with DirectoryEntry
Searching with the DirectorySearcher
Advanced LDAP Searches
Reading and Writing LDAP Attributes
Active Directory and ADAM Schema
Security in Directory Services Programming
Introduction to the ActiveDirectory Namespace
Part II: Practical Applications
Part III: Appendixes
Appendix A. Three Approaches to COM Interop with ADSI
Appendix B. LDAP Tools for Programmers
Appendix C. Troubleshooting and Help