First Published in Messaging
Magazine, September 1996
Introduction
The need for an industry standard directory has been articulated for
many years. Many in the industry have promoted and continue to promote
the ISO/ITU X.500 standard as the basis for this directory. Netscape,
along with a number of other companies, recently announced that they
would be supporting LDAP (Lightweight Directory Access Protocol) based
directory services. This has led to a rapid growth of interest in LDAP,
and has also led to substantial confusion as to what LDAP is and what
it might become.
This paper describes X.500 and LDAP, including recent developments
of both standards, and explaining the relationship between the two.
It then looks at various scenarios for the evolution of both protocols,
and then expresses views as to how X.500 and LDAP will be deployed.
Finally, the paper considers some issues relating to the deployment
of an Internet Directory.
What is Common to X.500 and LDAP
The most important thing to understand about X.500 and LDAP is that
they have more in common than different. The things that they have
in common relate to the information model and standard services, which
are absolutely central to both X.500 and LDAP. This section describes
the common core:
- Hierarchical Names. LDAP and X.500 both define a hierarchical directory
with hierarchical names. An example name is as follows: CN=Marshall
T. Rose; O=Dover Beach Consulting; C=US This name represents the
person with Common Name (CN) 'Marshall T. Rose', within the organization
(O) 'Dover Beach Consulting', within country 'US'.
- Typed Name Components. Name components are typed (Common Name,
Organization, and Country in the example above). This contrasts with
other schemes which have typeless names, such as the domain name
scheme. As discussed later, it is straightforward to represent typeless
names in a typed naming scheme.
- Typed Objects. Objects are represented as Entries in an X.500/LDAP
directory. These entries are given a type (or types), known as the
object class, by use of an Object Class attribute. Typical object
classes are People, Organizations, and Computers. X.500 and LDAP
share object class definitions.
- Typed Attributes. Information within objects is held as a set of
typed attributes For example there may be a 'telephone number' attribute
with one or more values. Many attributes are encoded as strings.
Other attributes have an encoding which is inferred from the attribute
type. This can be used for non-string data such as pictures or to
handled structured information. X.500 and LDAP share attribute type
definitions.
- Directory Operations. X.500 and LDAP share a common set of operations
to access and manage data in the directory. These are: read; compare;
search; add; delete; modify entry; modify rdn.
The rest of this paper will focus on differences, but the common core
is important.
Core Services: X.500 (1988)
X.500 and LDAP both have their origins in the ISO/ITU X.500(1988)
specifications, which were the result of work started in 1982. This
section reviews the core concepts of this specification, which are
not common to LDAP, or are needed to help understand the relationship
between X.500 and LDAP:
- Directory System Agent (DSA). The DSA is the core directory server.
A single DSA will typically hold only a part of the data available
in the total directory.
- Directory User Agent (DUA). A DUA is the client process that accesses
information in the directory. This could be a (human) user interface
or embedded in another application.
- Directory Access Protocol (DAP). DAP is the protocol which a DUA
uses to access one or more DSAs. Thus it is the protocol which allows
the client/server model of the X.500 directory.
- Directory System Protocol (DSP). DSP is the protocol that DSAs
use to talk to each other, and it carries the same operations as
DAP, along with some DSA control information. These interactions
are governed by a set of procedures for distributed operations, which
enable a set of DSAs to provide a coherent service, with the DUA
unaware of how the directory data is distributed between DSAs.
LDAP
LDAP (Lightweight Directory Access Protocol) arose from initial experience
with deploying X.500 directory services on the Internet in 1989-91.
Two DUA implementers (Marshall Rose and Tim Howes) developed lightweight
protocols to communicate between a DUA and a gateway which mapped from
LDAP onto X.500 DAP. It was clear that this was a more general requirement,
which led three people (Wengyik Yeong, Steve Kille, and Tim Howes)
to develop the LDAP standard under the aegis of the IETF OSI-DS working
group. This resulted in RFC
1487, subsequently updated as RFC
1777.
The goal of the original LDAP was to give simple lightweight access
to an X.500 directory, to facilitate the development of X.500 DUAs
and use of X.500 for a wide variety of applications.
LDAP usage grew, and became a core component of X.500 activity on
the Internet. There were several implementations, but by far the most
significant and popular was the free implementation by University of
Michigan Implementation, written by Tim Howes, Mark Smith and others.
This package included a number of free LDAP DUAs. Following on from
this, most suppliers of X.500 DSAs started to provide gateways to provide
LDAP access by LDAP to DAP conversion.
Recently, there has been a substantial interest in LDAP, following
the announcement by Netscape in conjunction with forty other companies
that it will be adopting LDAP. This has led to a number of other companies
announcing that they are "adopting LDAP", and an increasing
view that LDAP is synonymous with the Internet Directory.
Before looking further at the role of LDAP in relationship to X.500,
it is useful to consider why LDAP is 'simple', relative to X.500:
- Simple protocol encoding. While the LDAP PDUs are based on those
from X.500, elements of the protocol have been modified to produce
a protocol that is significantly simpler.
- Names and attributes use text encoding. Names and attributes are
pervasive in the protocol. In X.500, these have a complex ASN.1 encoding,
whereas in LDAP they are given a simple string encoding. This is
particularly helpful for applications that do not need to handle
the detailed structure of names or attributes.
- Mapping directly onto TCP/IP. LDAP maps directly onto TCP/IP (the
Internet transport layer), and removes the need for a non-trivial
amount of OSI protocol.
- Simple API. The University of Michigan implementation has set a
de facto API standard, published as RFC
1823. This is arguably the most important benefit, as it enables
easy implementation of directory enabled applications. The X/Open
XDS interface, which is the preferred API onto X.500, is much more
complex.
- LDAP relies on X.500 for the service definition and distributed
operations. Because LDAP is defined as an access protocol to X.500
and not as a complete directory service, it is possible to specify
LDAP very concisely. The detailed service definitions, while often
intuitive from the protocol, are formally specified in X.500. Where
the directory service is provided by more than one Directory Server,
the procedures for doing this are not defined by LDAP.
The original LDAP was very clearly a lightweight access protocol to
an X.500 directory. It is important to understand this clearly, when
looking at the issues of providing a large scale directory service.
X.500 Evolution: X.500 (1993)
X.500 has evolved significantly, to encompass features not in the
original X.500(1988) version. This has led to significant updates in
the X.500 (1993) specification. Some smaller additions are also planned
for X.500(1997). The major changes for X.500(1993) are:
- Sophisticated replication using Directory Information Shadowing
Protocol (DISP). Replication of data is critical for providing a
robust directory service. X.500 DISP provides this service, and gives
a lot of flexibility for different replication configurations.
- Access Control. There is a standard and flexible mechanism for
specifying access control. This is important to allow open and controlled
management of data in the directory, especially when the data is
replicated.
- Improvements to information model. There are a number of improvements
to the X.500 data model, based on experience with X.500 (1988). These
include attribute subtyping, which allows related attributes to be
handled in a clean manner and operational attributes, which allow
directory management attributes to be distinguished from user data.
- Administrative area model to help management. A mechanism is added
whereby data can be grouped into administrative areas, and data (including
access control) shared over this area by use of collective attributes.
This is an important change for many operational environments.
- A number of small changes to the overall directory service.
On the outside, the X.500(1993) directory has not changed a great
deal. There has been significant change to the internal operations
and management features, which address serious service and deployment
issues.
LDAP Evolution
LDAP is also moving forward based on experience with the first version.
Mark Wahl, Tim Howes, and Steve Kille started work in 1996 on a new
version of LDAP under the aegis of the IETF ASID working group. This
new work is known as LDAP version 3. The key elements of this new protocol
are:
- Access to X.500(1993) features. This allows an LDAPv3 client to
access the new directory services defined in X.500(1993). In effect,
LDAP is tracking X.500.
- Security features. This includes access to the X.500 DUA/DSA peer
authentication services and data confidentiality by use of the Internet
Secure Socket Layer (SSL) protocol. It does not include access to
X.500 signed operations.
- Extensibility mechanisms. These allow new operations to be added
without changing the core protocol.
- Referrals. The original LDAP connected an LDAP client to a single
server. The new LDAP allows an LDAP server to redirect an LDAP client
to contact a different LDAP server.
An important, but frequently misunderstood, change is that LDAP version
3 does not require X.500 to be used as the back end. Many have interpreted
this change as "the light and simple LDAP is now free of the complex
and heavy X.500 baggage". This is not true, as LDAP relies on
X.500 for much of its specification, and in particular for the service
definitions. The change is that LDAP may be used in two distinct ways:
- As a lightweight access mechanism to an X.500 directory.
- As a lightweight mechanism to a server which is not X.500, but
which provides the LDAP service. The server does not have to be X.500,
but it does have to look like the LDAP abstraction of X.500.
In summary, LDAP version 3 has added a number of useful services to
LDAP, and has increased the generality of LDAP's usage as a directory
access protocol.
Directory Access and the Future of LDAP
This paper has described the history and state of the art of X.500
and LDAP. The rest of this paper will now consider and give views as
to how this will move forward. This section considers directory access.
LDAP has an excellent future as a directory access protocol, and will
become the access mechanism for directory service in the Internet,
and the leading open directory access protocol. Reasons for this are:
- It is simple and easy to implement.
- It has good functionality.
- LDAP access will be provided by all major directory vendors, because
it can be mapped onto proprietary services or X.500.
LDAP version 3 will be the version adopted, because security and referral
support are essential for many applications. Peer authentication is
necessary for access control in the directory to be effective, and
this is needed for effective management. Referrals will be needed to
link Intranet directories, and to allow reference to other information
services. These requirements will ensure rapid migration from the current
LDAP standard.
The major alternatives to LDAP as an access protocol will be:
- Proprietary, closed, access protocols. Because many environments
will be able to operate without open protocols, there will still
be a significant role for proprietary access.
- X.500 DAP will have a role, particularly in environments that are
using X.500 servers and require access to the signed operation services
of X.500.
The increasing use of LDAP in applications will lead to a movement
from proprietary to LDAP access. Because LDAP is easy to provide in
an X.500 environment, this pressure will not affect X.500 DAP usage.
Intranet Directories and the Future of X.500
Moving on from access, the next level is to consider how a typical
enterprise will provide a directory, usually in the enterprise Intranet
environment. For most organizations, provision of directory is primarily
an internal service, and so Intranet provision is the most important
service issue. Where access is proprietary, provision will be proprietary.
Similarly, where access is by X.500, provision will be by X.500. The
interesting case to consider is the common case where access is by
LDAP. There are three possible scenarios:
- Proprietary provision. This is straightforward, and has the commercial
(vendor) advantages of achieving vendor lock in, and allowing vendors
to offer proprietary value add for this service provision. Many major
vendors are likely to follow this path.
- Provision by X.500. X.500(1993) has a range of features that make
it well suited for providing an Intranet directory service. It is
also directly aligned to LDAP. For this reason, many vendors will
choose X.500 as the mechanism for providing an Intranet directory.
- Provision by new protocols in the LDAP family. It would be possible
to specify a set of open protocols in the LDAP family for replication,
distributed operations, access control, and other features needed
for providing an Intranet directory service.
The effort associated with driving a new set of open specifications,
and the presence of options 1 and 2, will be strong factors to prevent
3 from happening. There will be strong market players pursuing both
options 1 and 2. While there is a clear benefit to open provision of
an Intranet directory, the requirement is not over riding. For this
reason, the battle between proprietary and X.500 provision of Intranet
directory is likely to be determined by the price and quality of the
products on offer.
The Future Internet Directory
The spectacular success of the Internet now makes it certain that
an Internet Directory and a Global Directory would be one and the same
thing. There are two key problems to solve.
The first problem is that Internet Objects are named by domain names
and mailboxes. For example:
www.netscape.com
S.Kille@Isode.com
An Internet Directory must provide mechanisms to allow objects to
be named in this way. This will probably need to be in addition to
the more general X.500 naming, as there are directory applications
that will need to use a more general form of naming. A key challenge
is to define the integration of domain names within X.500. A number
of proposals have been made here and there is clearly not an industry
consensus as to the best solution. Hierarchical encoding, with each
domain component represented as an X.500 Relative Distinguished name,
as proposed in RFC 1279,
is probably the best way forward. This X.500 encoding can be hidden
from the end user. While the solution is not clear, the user requirement
for the directory to operate with domain names is crystal clear.
The second problem is how to connect all of the Intranet directories
into a single global directory. There are a number of solutions:
- Don't do this. There is a clear view that a global directory is
not really needed, and even if it was, most organizations would not
be prepared to make available their data for it.
- Use LDAP cross references. Where organizations wish to share data,
they can simply managing cross references by manually adding them.
This is only a partial solution, as it allows directories to connect,
but does not create a global directory.
- Use X.500 as the interconnect. This is the approach being advocated
by many vendors and users. It is attractive in that X.500 was designed
to solve this problem, and there are a number of commercial implementations,
and significant deployment which demonstrates the potential of this
solution. The demonstration of X.500 at the EMA Directory Challenge
in 1997 will be a key test of this approach.
- Use the Internet Domain Name System (DNS) as the interconnect.
This makes sense in the context of domain names being used in an
Internet directory service. An approach to do this has been proposed
by Netscape (use of DX records). This has the advantage of simplicity,
although even very small changes such as this to the DNS infrastructure
have proved hard in the past.
- Use of new protocols in the LDAP family. This would mean defining
X.500 like system protocols and procedures for distributed operation,
in order to use LDAP like protocols as the glue for an Internet directory.
This is not easy to do, and it is not clear that it gives sufficient
advantage over use of X.500 to be worth the effort.
Both of these problems will need to be resolved, with an approach
which has broad industry consensus, before a global Internet directory
can be achieved.
Conclusions
In summary, the following evolution of X.500 and LDAP is expected:
- LDAP version 3 will be the most widely use Directory access mechanism,
with X.500 DAP and proprietary mechanisms having some role.
- Some Intranet Directories will be provided using X.500, and others
using proprietary mechanisms. X.500 will only be a small factor in
determining the most successful products.
- To build a global (Internet) directory, industry consensus must
be reached on two key problems:
- How to integrate the domain name space into LDAP/X.500 based
directory services.
- How to interconnect Intranet directories. X.500 is a possible
solution for this.
LDAP will have a key role to play as the preferred Directory Access
Mechanism, although it will not become the Internet directory. X.500
will have a role, and possibly a very significant role in the provision
of directory services.