Anyone who has ever used a phone book or library card catalog realizes that directories are very useful tools. For software developers, having a single place to store enterprise-wide user data such as email addresses and passwords is equally as useful. Essentially, a directory service is simply an electronic rolodex of sorts.
Our experience with the Internet shows us that having simple, standardized protocols is one of the keys to broad adoption of a technology. Try imagining the Internet today if there were no standard DNS system to resolve names into numeric IP addresses or an HTTP protocol to deliver web content! However, as is often the case in this industry, it took a while for a standard protocol (LDAP) to emerge and later become the underpinnings to one of the most successful data repositories today.
Directory services within organizations started out as point solutions to particular problems. As developers of these systems began to realize that many of the systems they worked on needed the same set of services, open products and tools began to emerge in the marketplace. However, these products tended to use proprietary network protocols, programmatic interfaces, and metaphors for organizing and naming the content they stored. At a certain point, people realized that a standard for directory services would allow huge interoperability within industry, government, and academia, saving everyone enormous amounts of time and money. Thus, the X.500 standard was born.
X.500 was adopted in 1988 under the ITU-T Recommendation X.500 (also known as ISO/IEC 9594: Information Technology-Open Systems Interconnection-The Directory). It formalized many important concepts that are essential to directory services today. These include a hierarchical metaphor for storing objects in the directory, a naming standard for referring to objects in the directory, and standard protocols for clients accessing the directory and other directories interacting with the directory.
One essential part of X.500 is the Directory Access Protocol, or DAP. DAP defines a client/server protocol for accessing an X.500 directory using the application layer of the Open System Interconnection (OSI) model. The OSI model was originally adopted because the implementers of the standard were interested in using X.500 to manage email addresses for the OSI message-handling application known as X.400.
Unfortunately, the OSI model is somewhat complex to implement and many thought an easier standard would be more useful for most clients. The University of Michigan had the idea of developing to the existing protocol and binding it directly to the TCP/IP network protocol for use over the Internet. They called their implementation Lightweight Directory Access Protocol, or 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