Implementing An Organizational Directory Service
Damy Mahl, Brunel University
7th September 1998
Deliverable D11.1 (Version 1.1)
EuroView AD1006
Telematics Application Programme of the European Commission
http://www.brunel.ac.uk/x500/euroview
http://www.materna.de/euroview

 Contents
Glossary	
1. Introduction.	
1.1 About This Document	
2. About Directories.	
2.1 Benefits to Your Organization	
2.2 How Do They Work?	
2.2.1 The Hierarchical Database	
2.2.2 Database Entries	
2.2.3 Directory Names	
2.2.4 Querying the Directory	
2.2.5 The Distributed Database	
2.2.6 Replicating Data	
2.2.7 Restricted Access	
3. Determine the Requirements	
3.1 Planning Functionality	
3.2 Meeting User Access Requirements	
3.2.1 User Querying	
3.2.2 Data Syntaxes	
3.2.3 Management Clients	
3.2.4 Platforms	
3.3 Data Gathering and Management	
3.4 Who Will Access Your Directory	
3.5 User Feedback	
4. First Steps	
4.1 Identify Usable Data Sources	
4.2 Start Thinking About Management Issues	
5. Design the Database	
5.1 Information Content	
5.2 Organizing the Database Hierarchy	
5.3 User Accessibility	
6. The Service Design	
6.1 Central Master	
6.2 Data Distributed Across Servers	
6.3 Widely Distributed Data	
7. Security Policy	
7.1 Restricting Access Using Access Controls	
7.2 Restricting Access Using a Filtering Proxy	
7.3 Restricting Access Using Intranet and Extranet Services	
8. Procurement	
8.1 Evaluating Server Software	
8.2 Evaluating User Interface Software	
8.3 Equipment Needs	
9. Service Roll Out	
9.1 Awareness and Training	
9.2 Installing Software	
10. Maintaining the Service	
10.1 Automatic Synchronisation with Master Sources	
10.2 Manual Update at Source	
10.3 Integrity Checking	
11. Cost Analysis	
11.1 Outlay	
11.1.1 The Development Phase	
11.1.2 Hardware and Software	
11.2 Running Costs	
11.3 Cost Benefits	
1. Bibliography	

List of Figures
Figure 2.1. Example DIT structures	
Figure 2.2. Directory Names	
Figure 2.3. Example DIT	
Figure 2.4. User Access to the Distributed Database	
Figure 5.1. Directory Hierarchy Based on Management Structure	
Figure 5.2. Locality Oriented Directory Hierarchy	
Figure 5.3. Data Organized by Access Area	
Figure 6.1. Centrally Mastered Data	
Figure 6.2. Distributed Server Architecture with no Replication.	
Figure 6.3. Replication Around a Backbone	
Figure 7.1. Example Access Control Usage	
List of Tables
Table 2.1. Example Object Classes	
Table 5.1. Key Object Classes (naming attributes in bold)	
Table 5.2. Supporting Object Classes	
Table 5.3. Common Attribute Syntaxes	
Table 11.1. Estimated Effort (man months) per Development Activity	
Table 11.2. Estimated Manpower Costs for Service Development (ECU)	
Table 11.3. Outline Hardware and Software Costs Per 1000 Users	
Table 11.4. Estimated Support Effort Required Per Week Per 1000 Users.	
Table 11.5. Estimated Running Costs Per Year Per 1000 Users	
Glossary
DAP
Directory Access Protocol. X.500 protocol used to access directory services.
DISP
Directory Information Shadowing Protocol. X.500 protocol used to copy directory information between servers.
DIT
Directory Information Tree. The organization of directory entries forming a hierarchical structure.
DN
Directory Name. A structured name used to reference entries in X.500 or LDAP directory services.
DSA
Directory System Agent. A directory server in an X.500 network.
DSP
Directory System Protocol. X.500 protocol implementing system level communication between directory servers.
DUA
Directory User Agent. A directory client program. Generally the application that a user uses to access the directory service.
IETF
Internet Engineering Task Force.
ISO
International Standards Organization.
ITU
International Telecommunication Union.
LDAP
Lightweight Directory Access Protocol. An application protocol used to access directory services. The target service can be based on directory services employing newer protocols in the LDAP family or an X.500 service with an LDAP port. LDAP is, at present, a functional subset of X.500, though the protocol family is currently being extended and enhanced through IETF activity. The base LDAP protocol is currently at version 3.
X.500
A set of protocols defined by ISO and the ITU to define an open directory service. The X.500 family of protocols includes DAP, DSP and DISP. The X.500 protocol is currently in its third version (the three versions being labelled by year - 88, 93 and now 97).
1.	Introduction
The development of directory services was prompted by the exponential growth in the use of electronic communication. The rationale being that the more addresses and means of communication there are the greater the need for supporting directories. Put simply, electronic directories were originally conceived with the needs of people in mind. In fact the concept has a much wider applicability as directories can represent many different types of data (not just e-mail addresses and phone numbers) and organize them in many different ways (not just as ‘White Pages’ information). Consequently, present day electronic directories are regarded as infrastructural services. By providing the focus of global addressing and data needs the directory can and will underpin much of all future computer networking strategy.
IT planners are beginning to understand the potential of a flexible directory and are seriously looking at the need for an enterprise-wide service. The territory, however, will be new for most managers and few staff are likely to have the appropriate skills. Many organizations will develop a list of requirements and tender these to a set of vendors. Some will purchase shrink wrapped software and implement the service themselves. This document aims to assist by examining the directory concept and how successful service deployment can be achieved. The assessment of functional requirements, translation to design, implementation and subsequent service maintenance are discussed.
The issues associated with directories span a broad range and relate to the legal, technical and organizational. The skills called for during the deployment effort will be diverse and are unlikely to be provided by any one group. As a result, the process is likely to be collaborative and contributions will certainly be made by various parts of the organization. Legal issues, database management and data ownership aspects will, for example, be the preserve of administrators, while system issues will be in the domain of the IT department. Involvement of all relevant groups should be foremost in the implementers mind. It is certainly necessary to exercise a degree of sensitivity as the service will have a great effect on the way staff work and the way the organization operates as a whole.
1.1	About This Document
‘Implementing an Organizational Directory Service’ was written under the auspices of the European Commission sponsored EuroView project. EuroView aims to research and advance the use of distributed directories by government institutions across the community. Although the targeted at IT bodies within European Administration, the information contained applies equally well to any other corporate body intending to implement a directory service.
This document is the second in a series providing guidance to directory planners and implementers. The first, ‘Planning Directory Services’, provides a high level management overview of the steps involved in delivering a corporate directory service. The third in the series, ‘The Directory Deployers Handbook’, will be a detailed version of this report. 
2.	About Directories
A directory is fundamental to office communication. Before you can post a letter, make a phone call or send an e-mail you need to know the number or address of the person you’re contacting. Without an efficient directory, determining such information can become a time consuming and expensive operation - looking through a phone book, ringing the operator or in some cases sending a message to an e-mail administrator and waiting for a response. Electronic directories bridge this gap by making all contact information readily available through a single, user friendly, manageable and efficient information service. In doing so it facilitates and enhances the use of all communication processes.
Directories already exist in various shapes and forms. Telephone data is handled by paper phone books. Many e-mail systems contain an integrated electronic address book. The directory aims to rationalise such mechanisms by acting as the main repository for all communication data. If a telephone number is needed by a person they use the directory. Mailing list applications can use it to verify a person’s e-mail address. The directory provides a focus for addressing needs by making the processes of gathering, storing and retrieving this information a central and co-ordinated activity.
The directory possesses a number of key features which help it go about its task:
•	Range of application. The directory can store many different kinds of information - anything from e-mail and network addresses to sound and image files. The data model is extensible so new types of data can be represented.
•	Searchability. Information can be located on the basis of common and known criteria. Being able to search the database in a user friendly way is an important aspect of the directory.
•	Accuracy. Ease of data management is central to the directory, so the directory should (or at least can) always contain the most up to date information.
•	Information sharing. Directories can be connected together in order to share data. This means that you can access the directories of other organizations, as well as making yours available to them.
Whilst it was initially conceived as a method of locating electronic addressing information, the properties outlined above mean that the directory is flexible enough that it can provide access to most forms of widely distributed information. Thus it lends itself to the support of many functions. Here are a few examples:
•	White Pages. Locate personal phone and e-mail information.
•	Yellow Pages. Local contact information related to services.
•	Public key management. The directory can be used to store and distribute public keys. This infrastructure can then be used to support secure applications, primarily messaging.
•	E-mail routing. The directory is beginning to be used for the storage of e-mail routing configuration. 
•	Network address directory. A directory of networked services, e.g. printers.
The services listed all require some form of directory. Some of them are currently supported by existing directories (in whatever form). Others are not provided for in any co-ordinated way. The electronic directory aims to rationalise existing directory services by providing a “one stop” access point for all forms of contact information. If you want to find someone’s e-mail address you can find it in the directory. If you need find the phone number of a service, it’s there. It is extensible and thus capable of supporting future applications that have a directory requirement.
2.1	Benefits to Your Organization
The current trend in both the private and public sector is towards accountability. Citizens are demanding higher and higher levels of service and, importantly, more and better information about the services they are using. Organizations will have to take steps in order to live up to these expectations and maintain competitiveness. One of these measures will be ensuring that the communication with the consumer is as effective as possible.
Corporate telecommunications and networking strategy will be central to this. In order for IT systems to function well, a corresponding information framework is required - without access to addressing information proper use of the communication system cannot take place. Similarly, the more efficient the information framework, the more efficiently communication takes place. The quicker a phone number is found, the quicker the call is made and the service rendered.
There are several benefits to making addressing information readily available via the directory. Firstly, internal communication is improved, resulting in productivity gains. Secondly, the way in which citizens and clients communicate with the organization is affected - your services are easier to reach because contact points can be discovered in a structured, user friendly and convenient manner.
The gains are more than just practical. Publication of useful information is good for public relations, because it signifies that your organization is open to communication with the citizen, business and government. In this way the directory gives your organization a network presence and accessibility that can span international borders. The importance of this cannot be overstated given the ever increasing scale and diversity of the global networked community.
2.2	How Do They Work?
Electronic directories are distributed databases. This means that parts of the database are held on a number of connected machines. Although the directory isn’t held in its entirety on one machine, access to it is seamless, so users are unaware of the underlying distribution of data. All a person using the service sees is a single database. This applies to every aspect of user access - reading and searching the directory as well as modifying its contents. This property of the directory is reflected in several aspects of its design. The database, for example, has a tree structure which is easily divisible into sub-components and so is suitable for distribution across directory servers (though more of this later).
This section looks at the underlying mechanisms behind electronic directories and explains some of the terminology. It is a summary and is intended to provide enough background for the reader to continue with the rest of the document, but without getting bogged down in detail. The majority of concepts apply equally to X.500 directories and those based on the LDAP protocol. 
2.2.1	The Hierarchical Database
The directory database is organized into a tree structure where each node in the tree represents an entry in the database. Entries then correspond to some real world object, e.g. a person, department, organization or country. Similarly, the structure of the tree follows the real world relationships between the objects represented - people work within departments, departments are divisions of organizations, and so on.
The structure of the directory database is usually referred to as the DIT (Directory Information Tree). Figure 2.1 illustrates two common DIT structures. In the first of countries occupy the first level of the tree. Each country then “owns” a set of organizations, with organizations then containing departments and these in turn containing entries describing people and roles. In the second the structure reflects the Internet domain naming scheme, with the full organizational domain (in this case “dti.gov.uk”) then containing personal and role entries.

Figure 2.1. Example DIT structures
A hierarchical data structure was adopted for a number of reasons:
•	Many real world relationships can be represented by a hierarchical model, e.g. management, geographical or Internet domain based structures. 
•	Hierarchies are simple and understandable. Making the database comprehensible to people is an important aspect of the directory.
•	The database can be cleanly divided (into subtrees). This a key factor in the database distribution mechanism and also in the data management and ownership scheme. In Figure 2.1, for example, the subtree rooted at ‘Ministry for Social Affairs’ could be regarded as a distinct part of the database, with its own data management and security policies. 
2.2.2	Database Entries
Directory entries can be thought of as a database record consisting of a set of fields. The fields, in directory jargon, are known as the attributes of the entry. Some of the attributes of a personal entry could be the person’s name or their telephone number. Attributes can have one or more value - a person may have more than one phone number for example.
Entries can represent different things, e.g. not just people, so each type of entry will contain different kinds of information. Every personal entry has an attribute for the person’s surname, but the surname attribute would not apply to an entry for a room, which would have attributes for its room number and/or room name.
The real world object that an entry represents is described by its object class attribute. Every entry has one or more object class values that indicate what that entry represents, and what further properties it possesses.
As an example, entries representing people contain the ‘person’ object class value. This object class specifies that the entry must contain values for the ‘commonName’ and ‘surname’ attributes (note that the quoted attribute names are the labels defined by the X.500 directory standard - other directory protocols may use different names). It can also optionally contain values for other attributes such as ‘telephoneNumber’. By applying further object classes to an entry more information can be added to it. In order for a personal entry to contain a World Wide Web reference (via the ‘labeledURI’ attribute) it must contain the ‘labeledURIObject’ object class. A few basic object classes are listed in Table 2.1.
	Person	OrganizationalRole	Organizational Unit	
Mandatory Attributes	commonName
surname	commonName	organizationalUnitName	
Optional Attributes	telephoneNumber
description
seeAlso	roleOccupant
description		
Table 2.1. Example Object Classes
2.2.3	Directory Names
Entries in the directory are identified by their entry name. The entry name consists of one or more of the attribute values from the entry. The attribute values used to name an entry are referred to as its distinguished values. An organizational entry, for example, is generally named by one particular value of its ‘organizationName’ attribute. An entry representing the European Commission may contain the following values for the ‘organizationName’ attribute:
o= European Commission
o= EC
The entry for the European Commission would then be named by just one of these values - the distinguished value.

Figure 2.2. Directory Names
Each entry in the DIT has a unique name. The name of an entry is formed by concatentating the distinguished values of all entries up to the top of the tree, beginning with the entry itself. Looking at Figure 2.2, the name for the ‘Pensions’ entry is then:
ou=Pensions; o=Social Services; c=GB
The name of an entry is referred to as its distinguished name (or DN for short). The DN of an entry is the key used to reference the information that it contains.
2.2.4	Querying the Directory
Users are permitted to retrieve and search for directories. Directory reads are performed by supplying the directory name of the entry in question, together with a list of attributes required. The search operation is used for friendly look up of directory entries, i.e. it is the means of locating an entry if you don’t know its directory name. The search operation works by applying a filter across a set of directory entries. A filter consists of one or more attribute value pairs which are compared against the contents of an entry to see if they match. The match operation can be performed using contained substrings (so the string “smith” would match “Joe Smith” or “Barry Blacksmith”) or using an approximate match algorithm which compares the sounds of words (so “shilton” might match “sheldon”).

Figure 2.3. Example DIT
The search operation can be applied to single entries, all immediate children of a given entry or all entries in a subtree. In the example DIT shown in Figure 2.3, a subtree search using ‘commonName=Peter*” (i.e. a leading substring) would find all entries beginning with “Peter”. Similarly, a filter “cn=*apple” would find all entries ending with the string “apple”. Combining the two filters would result in a single match, the entry “cn=Peter Pineapple”, because it begins with the string “Peter” and ends with the string “apple”.

Figure 2.4. User Access to the Distributed Database
2.2.5	The Distributed Database
Users access the directory by using a client application to connect to a local directory server (servers are referred to a Directory System Agents, or DSAs for short). The directory is then queried as a whole using a single session. In the common case a user will query a local DSA containing local information, e.g. the directory of the organization they work for. When a user requests directory data not held locally, the connected server will pass the request to a DSA deemed to be in a better position to satisfy the request. The result is then chained back to the user via the server he or she is connected to (this is illustrated in Figure 2.4). Other models are possible. In another common mode the user interface connects directly to any server that contains the information it needs.
2.2.6	Replicating Data
Sometimes directory servers will be linked by low bandwidth connections. This results in slow access to data not held in the local server and so service quality is compromised. One way round this is to replicate data across servers. Copying regularly accessed remote data to a local access point means that less network usage is required to get at that data and also helps to balance load across servers. In this way data replication can be regarded as an optimisation of directory performance.
The replication mechanism is also used as a method of providing service resilience. Here all data in a service server is copied to a shadow server. If one server goes down, then service access can be routed via the backup.
2.2.7	Restricted Access
When a user connects to the directory they can identify themselves as a given entry in the directory (usually their personal entry), supplying a password or digital signature to verify this. A directory user’s identity can be used to restrict the information they are allowed to access from the directory. Directory access control can be used to stop people from viewing or updating the directory. Restrictions can be applied to whole entries or to individual attributes within them, so a user could be allowed to, for example, modify the ‘description’ attribute in their own entry but not any other.
The value of an access control system is entirely dependent on the type of authentication used to identify directory users. The most common form of authentication in use today is ‘unprotected simple’ authentication. Here a user’s identity (a directory name) and password are passed to the directory at connect time in unencrypted form. Obviously, this does not offer total protection (password snooping is possible). If access controls are used to restrict dissemination of highly sensitive data then authentication based on encrypted methods are best used, especially when off-site connection to the directory is permitted.
3.	Determine the Requirements
Before you can actually plan the introduction of a directory service you must clearly define exactly what you’re trying to achieve. Are you simply upgrading existing applications with modern technology? Are you introducing electronic directory for any of its specific properties (e.g. ability to distribute directory data)? Remember that the directory is capable of supporting a host of applications and so can replace existing services as well as (effectively) forming new ones. Starting with core functionality consider which services could employ the directory. Once you’ve composed a list of potential uses you can decide which ones will be practically achievable. The range of uses will be limited by resource factors such as cost, manpower and the ability of existing applications to interwork with the directory. Availability of usable data will also play a part. The gathering and dissemination of some addressing information will be defined processes, e.g. publication of the internal telephone book. Other information, such as role data or management structure, may not be obtainable as a single block of data and in a form ready for inclusion into a directory. Where a required data set is not immediately accessible new data gathering and management procedures will have to be installed in order to make the information ‘directory ready’. Take care, then, to consider current data practices before defining the functional specification.
3.1	Planning Functionality
Often functional requirements will stem from the usage of existing applications and non-electronic services that the directory might replace. Begin by listing services that could make use of the directory or can be categorised as directory services. This should give you a baseline from which to progress with a set of requirements. Current usage of directories and similar applications is likely to be more pervasive than you might initially guess. Here are some examples:
•	Contact management systems.
•	Paper telephone books (both internal and external).
•	Functional directories and service listings.
•	Personnel database.
You should also look at any other services that require any form of addressing and can, therefore, potentially be supported by a directory service. Information, for instance, such as ISDN numbers or video conferencing addresses are often few enough that the data has yet to be provided by any form of directory. As services like these become more prevalent the need for a directory of addresses will become more and more apparent.
Once a list has been compiled you’ll need to look at these services and determine who uses the system, how it’s run and how much effort goes into to maintaining the service. Look at those you’ve found to see if their operation could be effectively replaced by the electronic directory. You can do this by determining a few key facts:
•	Precisely what information is provided? Is this information capable of being supported by the directory? For example, the directory is suited to handling document references, though not to the storage of documents themselves.
•	Who or what (application) makes use of the service? This will give you a handle on how much actual usage of directory data already takes place. If the service is used by relatively few people and can be identified as a special need then the directory may not be appropriate. Administrative departments may need a relational database, for example, and the directory is not necessarily best equipped to support this function.
•	What data sources are currently available and how they are kept up to date. How for example do the providers of the paper telephone book gather their data? The processes highlighted here may need upgrading to suitably accommodate the directory.
•	What resource is already going in to the upkeep of the service? How much effort goes into creation and maintenance? Ideally management of the directory database will require a similar level of resource. This, though, is not an ideal world and so be prepared to accept an increased and consistent level of effort for ongoing maintenance of the database. Remember that where directories such as the paper phone book are kept up to date and published periodically, the directory can keep in step with changes as they occur.
This information will give you with a profile of your organization’s current information usage and provide a basis for going on to develop your requirements. Importantly you’ll have a roster of candidate services for replacement by the electronic directory and from this you can go on to identify the information types that the directory will need to support.
3.2	Meeting User Access Requirements
The success of a directory service will be gauged by how well the service is perceived by its users. If high levels of user acceptance are not achieved then the directory will not be utilised to its potential. The user interface is key component of the service. Users are quickly discouraged if what they see isn’t friendly or fails to do exactly what they want it to. The directory provides a rich set of querying mechanisms and it is up to the user interface to translate these into an appropriate response to staff needs. 
It is essential, then, that the user interface performs the tasks that users require of it. The following are important considerations:
•	Searching. Does the interface support the kinds of searches required? Can it, for example, search using fields that users want to use as match criteria?
•	Browsing. The ability to browse through directory contents is not a fundamental function, though many users like the interactivity that this “view” on the directory provides. 
•	Data presentation. Ensure that any client makes full use of the types of data that will be stored in the directory. 
•	Management capability. Interfaces for manual updates to the directory will be required. 
•	Application integration. The interface should be capable of integrating with other applications that require access to directory data.
3.2.1	User Querying 
Generic and user friendly search engines are difficult to design. This is because the shape and content of directory databases can vary considerably from organization to organization. This means that any directory client you adopt will have to be able to cope with the kinds of searches required, using your particular database structure and the data types it contains. If a user agent expects all searches to occur at a single point in the directory information tree this would prevent, for example, searches across a fully distributed directory.
Also be careful that the client allows you to search using the required criteria. Most clients will support White Pages searches (e.g. match on a personal name). Other searches (such as search on role) may not be supported. Similarly the way a client handles search input is also important. For example will the search string “J Smith” match entries containing “John Smith”, etc.? It is very important that the match algorithm works well with the data contained in the directory.
Some clients allow the user to ‘browse’ the directory information tree. Specifically, this means that the user is allowed to list entries below any selected node in the tree, e.g. list all departments beneath an organizational entry. This may seem useful on the face of it, as it adopts a fairly common user interface metaphor. There are, however, limitations to this form of usage, the main one being that many directory systems will be configured to prevent listing of all entries in the directory (especially if there are more than a hundred or so) in order to prevent database trawling.
3.2.2	Data Syntaxes
All information contained in directory is formatted according to a given attribute syntax. The ‘postal address’ attribute for example is limited to six lines of thirty two characters. The ‘photo’ attribute is in G3 fax format. For a client to handle a syntax it must be able to display data of that particular syntax and in some cases be able to make meaningful use of it - selecting a World Wide Web URL could invoke a browser, an e-mail address could raise a mail interface with a compose window, etc.. In the case of an administrative user agent it must also be able to modify data.
Particular syntaxes to watch out for are:
•	labeledURI A World Wide Web URL.
•	postalAddress A formatted postal address.
•	jpegPhoto A colour image encoded using the JPEG scheme.
•	photo A monochrome image encoded using the G3 fax scheme.
•	distinguishedName A directory name.
3.2.3	Management Clients
Whatever your database maintenance strategy you’ll need a user interface capable of updating the directory database. This will handle the relatively irregular and small changes that occur as staff arrive, leave or move within the organization. The client should be able to add, delete and modify entries. The capacity to rename and/or move an entry is desirable, though not absolutely necessary.
Some support for bulk changes would be useful, for example moving entire groups of entries in a single user interface operation. However, be wary that interdependencies exist in the directory and any large scale movement of directory entries will invalidate existing references to those entries. Role entries containing pointers to the personnel that occupy them are an example. If the referenced personal entries are moved then the pointers from the role entries are broken. Ensure that any bulk operations within client software will take care of, or at least flag, such problems.
As with general directory clients the management interface must be suited to the people who will use it. If ‘naïve’ users are to be given the ability to manage the database then the user interface should hide technical aspects of the directory. Where appropriate information should be defaulted. For example when creating a new entry for a person, the client should use a template containing default values rather than relying on the user to enter them.
3.2.4	Platforms
The directory is a generic service and can be accessed in any number of ways. Most directory vendors will provide a standalone user interface and possibly a Web gateway. A third and often more useful approach is the integrated client. Here a directory client is built in to or co-operates closely with another package. This makes sense as the directory is a support service, rather than one that people will use as a primary application. A common example is the use of an embedded client in an e-mail interface. Here an in-built directory interface is used to locate the addresses of e-mail recipients or to populate a local address book. Similarly a plug-in module can be used to insert postal addresses into word processors and other office applications. Each mode of usage has advantages and disadvantages. In practice their use will be complementary and it is possible that no one of these approaches will fulfil the entire requirement.
The Web approach is useful for a number of reasons. At the roll-out phase no installation of client software is necessary (assuming users already have access to Web browsers). From the perspective of usability this method is important, as most people have used Web based search pages, and so a directory presented in this way shouldn’t constitute anything unusual. However, the Web gateway option restricts possibilities for some directory functionality. In particular the ability to perform updates is problematic due to extra steps required in authenticating a user to the directory service when accessed via the Web.
Dedicated clients are likely to provide the richest set of directory functionality. Examples of features that a standalone interface may provide over other access methods are:
•	Authenticate as a given user. As a result it is easier to provide an interface for updating the directory database.
•	More control over directory operational parameters (e.g. time limits, search filters, etc.).
•	Better and more flexible interface onto the directory (for example a tree view or ability to configure attributes displayed).
•	Connect to a named server.
The kinds of functionality described do not necessarily preclude general usage, thus dedicated clients need only be deployed in specific cases, for example when a dedicated interface is required for database update or when the Web service does not run quickly on the desktop.
Embedded directory user agents are a relatively unexplored area of development. So far integration has generally been limited to electronic mail interfaces, i.e. as an in-built mechanism for looking up intended mail recipients or populating an address book. Remember that the directory can contain many different kinds of information. As directory usage develops in coverage and information content further applications of this nature will become available. Recent developments have seen directory user agents embedded into word processors (for postal address insertion) and workflow applications where calendar and scheduling information is stored in the directory and linked to the entries of individuals and groups.
Clients are likely to integrate well, perhaps using a proprietary interface, with applications provided by the same vendor. Sometimes directory user agents will contain hooks onto a common interface (such as MAPI), which will make integration easier. In cases where no common interface is present specific solutions may have to be developed for a particular requirement.
3.3	Data Gathering and Management
A directory can be rendered ineffective if the data it contains becomes out of date. Users will lose confidence in the service and it will be disregarded. An important requirement then is that the database should be monitored and updated regularly. Set targets for the routine update of the database and the time it takes to respond to change requests. Careful thought about the data management task is essential, even at the specification stage. There are several reasons for this, the main one being that you need to have some initial estimates on the resource requirement for data maintenance in order to determine what is practically achievable. There’s little point in defining a rich and comprehensive directory database if the job of maintaining the database is so difficult that data integrity is compromised.
The database management task consists of initial loading, subsequent manipulation in order to keep information up to date and, if necessary, synchronisation with other sources or users of directory data. Some things you should start thinking about:
•	Where will you get the initial data from?
•	What will be the difficulties in merging the data sources?
•	Will any new data gathering and management processes have to be implemented (e.g. registration of new staff in the directory)?
Most importantly, this will get you thinking about the cornerstone of your data strategy - who will master what directory data.
3.4	Who Will Access Your Directory
Most organizations have a policy on the publication of data relating to their staff. By and large this is designed to protect the organization from transgressing the rights of individuals. Some data is critical enough that publication (at any level) through the directory is highly undesirable. Most large companies would not wish the phone number of their chairmen to be public knowledge (in fact many would not want such numbers published internally!). Whilst restrictions of this nature are sometimes necessary it is often the case that security policy is based on the notion that by being over secure and restrictive, one cannot go wrong, whereas underestimating security requirement will always cause problems.
The benefits of presenting a public face to your directory service have already been outlined. Should you decide to make open accessibility part of your requirement set you’ll need to decide what data will be made openly available. From an administrative point of view the simplest choice would be to make all directory data publicly accessible. This though has a number of potential drawbacks:
•	Your staff data will be open to attack from mail spammers, headhunters and the like. 
•	No sensitive data can be incorporated into the directory.
Many directories only provide public access to a subset of all entries contained in the database. Some organizations may only want to make official contacts accessible, and restrict external access to staff data. Others may be more open and hide only highly sensitive information.
Several aspects of the design will be strongly influenced by the division between restricted and open data. This includes the security mechanism as well as the structure of the directory database. Consequently it is important to settle on this at the specification stage.
Current practice, though not always the best guideline, are the place to begin looking at real security needs. A good litmus test would be to ask if a person’s phone number can be found, for example, by ringing the switchboard and asking. Are other methods available for locating such information? If a number is determinable by non-directory means, then the number is not that sensitive anyway (or else security needs reviewing). Restrictions on contact data are sometimes imposed not on the basis of a logical position, but more on a vague feeling that data should be hidden.
Falling between the chairs of “open, beneficial” and “critically restricted” data is the information that may need to be hidden for practical purposes. Some communications channels are defined to be available for public consumption (the electronic equivalent of reception areas and similar lines of enquiry). Whilst other contacts exist for use when an incoming call needs to be passed up the hierarchy or laterally to a more specific area of response, these should not be extensively used for general enquiries. The question here is, is it sufficient to label a contact in the directory as being ‘not for public consumption’? Moreover, will publishing entries not tagged in this way actually cause problems to the organization? It is important to note that though a person’s contact information may not be of use to the general public, it may be useful to externals who deal directly with that person.
3.5	User Feedback
Even at this stage you should consult with all relevant users in order to determine who is most likely to be affected by a new directory service. User feedback is notoriously difficult to attain…even more so when related to an application that has yet to be implemented. However, some approaches are better than others. In the case of the directory the approach is best made in light of the applications that will depend on it, e.g. the directory will form a component of the e-mail user’s tools and so should be described in those terms. Soliciting opinion on the directory as a generic application is likely to fail in the absence of concrete and specific information. Requesting feedback on a well defined and specific set of user requirements may yield results.
Input can be gathered on a range of user level issues. These can be broadly categorised as follows:
•	What entities should be described? Obviously people or contact points will be the initial case. The set of all printers in a large organization is an example of useful information that could be stored in the directory.
•	What information should be stored? For personal entries and contacts this might be telephone number, e-mail address, etc.. In the case of printers this might be the printer name, location and capability (e.g. does it support colour).
•	What should the coverage be? Would the directory data for affiliated organizations (such as contractors) be useful? How useful would it be for external organizations/users to access the directory? How important is the ability to connect to other organizations?
•	Service levels. What would be an acceptable response time for a directory query?
•	User access methods. Which applications would users like to see integrated with the directory? Examples are word processors, e-mail, distribution lists and workflow applications.
•	Data privacy and protection? What personal information do users not wish to see in the directory?
4.	First Steps
4.1	Identify Usable Data Sources
By now you should have a clear idea of what information you want to put in the directory. The next move is to locate where the information is currently stored. Start by acquiring a definitive list of the people that you’re going to put in, together with their contact details. The telephone book and e-mail databases will be the first stops. Even these may not represent the whole picture - contractors and affiliated staff, for example, might not be included. If role or service oriented data is to be stored then additional sources might be the functional directory or organizational contacts list. Further information (such as job titles) might be present in the personnel database.
4.2	Start Thinking About Management Issues
Loading the directory is just the initial step. Once in place the database will need to be kept up to date. Thus, once you’ve resolved the sources of data that you want to use you should begin to consider the management task. The main question is how the directory will be placed in the current data gathering and administration scheme. Will it become the master source of data for, say, telephone data? Or will data published in the phone book be ‘slaved’ in the directory? From a management perspective it would certainly be simpler to use the directory as the main point at which such data is introduced into the system and subsequently maintained (i.e. the master source). Reducing the number of data streams will reduce overall maintenance effort. Of course this rule of thumb should only be applied where appropriate. The directory probably won’t be capable of providing the database functionality required by a human resources department (the directory cannot, for example, replace a relational system). The personnel database might well then become the master source of the data it contains, with synchronisation processes keeping the directory in step.
The directory should be seen as an opportunity to rationalise existing databases and associated management procedures. Going all the way, directory registration of staff could be defined as organizational practice. This means that when new staff arrive their details are entered into the directory as a step in the registration process. Upon leaving their details are removed. Internal staff movement would mandate corresponding update of the directory. Defining organizational procedure around the directory in this way is useful for many reasons:
•	Directory maintenance will require less merging of data sources.
•	Simplification of existing data gathering procedures, e.g. if still required the telephone book can be published using the directory as source.
•	Up to the minute information is always available in the directory.
A more detailed view on directory maintenance is given in Section 10.
5.	Design the Database
The content and structure of the database will affect the way the directory is used. Aim to make the database as accessible (easily queried) and informative (rich in content) as possible. Weighed against this will be the need to facilitate the equally important directory management task. Working towards this can be difficult as putting more information in the database inevitably leads to a greater administrative overhead. 
It is important to note that once the data model has been designed and the directory populated, it will require some effort to redesign and rebuild. More so if the directory names contained have already been recorded elsewhere as any restructuring will result in names becoming invalid. Thus, it is essential that a satisfactory design (there is probably no such thing as a perfect design) is found before the database is put forward as service. Don’t expect initial designs to fulfil the task - refinements will inevitably be made as experience is gained on the relevant issues and user’s have had a chance to give real feedback. Any data model you come up with should be assessed on the following factors:
•	Information content. Does it tell users what they want to know?
•	Usability. How easy will it be to search the database? Remember if search criteria are minimal then a combination of browsing and searching by the user may be required.
•	Manageability. How difficult will it be to maintain the database? If the directory hierarchy is complex, e.g. reflecting management structure, then keeping things up to date may become problematic. 
•	Security policy. An involved access control policy might be difficult to implement and will result in extra management overhead. 
User considerations should be paramount. Specifically, this means that the database should contain the data that people need, and that the hierarchy should be structured in a natural and logical way. This enables the user processes of searching and browsing. Service contact points of interest to external users could be held in a dedicated subtree in order to make browsing easier. The internal management hierarchy, which would solely be of internal use, could be held in another.
The database design should also be strongly influenced by management and security issues. It may be advantageous to keep public and private information distinct in the database. This makes sense from the security and management perspectives as it eliminates inter-dependency. Implementation of the security policy in particular would be simplified by such an approach as access restrictions can then be applied prescriptively to relevant subsets of information.
The database is organized by a set of rules called the ‘directory schema’. The schema defines how entries in the tree are organized, the types of entry held and the types of information that they contain. The schema definition consists of a number of rules:
•	Entry Content. Entry types in the directory are defined by a set of associated object classes. Each object class tells the directory what attributes can be held in that entry. The person object class, for instance, must contain values for the surname and commonName attributes. The organizationalPerson object class allows an entry to contain, amongst other things, e-mail addresses and telephone numbers. A set of standard object classes exist, though this is extensible.
•	Entry Naming. Entries are named using one or more ‘distinguished’ attributes from the entry. A personal entry will always be named using the commonName attribute as a minimum. 
•	Structure Rules. Each node in the hierarchy is permitted to parent entries with any of a given set of object classes. This rule could be used to define, say, that person entries are only allowed to exist beneath departmental (organizationalUnit) entries. This enforces a consistent directory hierarchy.
5.1	Information Content
Start by listing the objects that the directory needs to represent. A White Pages service will contain personal entries. If service contact points are to be included then ‘role’ entries should be added. Representing the organizational hierarchy will mean inclusion of departmental entries (organizational units). Locality entries will be needed if the organization has more than one site and each site is to be listed.
Entry Type 	Key Object Class	Associated Attributes	
Person	person	commonName, surname	
Department, Office	organizationalUnit	organizationalUnitName	
Place	locality	localityName	
Organization	organization	organizationName	
Role, Job	organizationalRole	commonName, roleOccupant	
Table 5.1. Key Object Classes (naming attributes in bold)

Once this list has been formed you should go on to specify the data types that entries will support. Begin by defining the set of core object classes that will be used. Remember that the attributes that an entry can contain are specified by the object class of that entry (see section 2.2.2 for an explanation). Each entry will have a key object class that signifies the actual entry type, i.e. personal entries will be based around the ‘person’ object class. The key object class is normally used to define an entry’s naming attributes. Table 5.1 lists a set of common entry types, corresponding base class and the attributes they define. 
Object Class	Additional Attributes	
organizationalPerson	facsimileTelephoneNumber, telephoneNumber, postalAddress, description, businessCategory, seeAlso, userPassword	
newPilotPerson	rfc822mailbox, roomNumber, userClass, homePhone, homePostalAddress, secretary, personalTitle,  preferredDeliveryMethod, janetMailbox, otherMailbox,  mobileTelephoneNumber, pagerTelephoneNumber, organizationalStatus, mailPreferenceOption, personalSignature	
labeledURIObject	labeledURI	
Table 5.2. Supporting Object Classes
Further object classes will define the data properties of an entry. An example is the ‘labeledURI’ object classes, which is used to add support for World Wide Web URLs to an entry. Some supporting object classes can be applied generically to all entry types (‘labeledURIObject ‘is an example). Some, however, only apply to given classes of entry. The ‘organizationalPerson’ is an example. Table 5.2 lists a few of the standard object classes, with associated attributes, that you should consider.
Syntax Name	Description	Typical Usage	
CaseIgnoreString	A textual string supporting T.61 encodings for international characters. Case ignored when matching.	CommonName, surname, organizationName	
CaseIgnoreList	A list of strings each obeying the syntax and match rules of CaseIgnoreString.		
PrintableString	A printable string.	serialNumber	
PostalAddress	Similar to CaseIgnoreList, except that only six lines are permitted and each line must be no longer than 32 characters.	PostalAddress	
NumericString	A string of numeric digits.	x121Address	
CaseIgnoreIA5String	A string of ASCII characters.	rfc822Mailbox, domainComponent	
DN	A directory name.	SeeAlso, secretary, roleOccupant	
Table 5.3. Common Attribute Syntaxes
You will now have a list of core data elements. Consideration should now be given to any further information not supported as standard by the directory. Some of this data, such as employee or payroll IDs, will have purely local scope. Other attributes are of general use but are nonetheless unavailable in the core schema. No attribute type in the recommended schema explicitly defines video conferencing numbers for example. In order to handle unsupported attributes types you may have to define custom object classes and attribute types.
The contents of an attribute are structured according to an attribute syntax. The syntax defines the format of attribute values together with the rules used to match against that attribute when a search operation is performed. The ‘commonName’ attribute has a syntax of ‘caseIgnoreString’. This means that the attribute can contain a standard set of character values, and that any matches against the attribute value will be performed without comparing case. Table 5.3 lists a few of the more common syntaxes, together with examples of the attributes that use them.
To illustrate all of this let’s consider a locally required attribute named ‘employeeID’ which will contain every staff member’s identifier (you might want this in the directory in order to correlate it with the personnel database). In order to add this attribute as an extension of the local schema you’ll have to come up with the following information. 
1.	The syntax for the ‘employeeID’ attribute. It is often adequate to use a generic syntax, such as ‘caseIgnoreString’. It may be better to utilise one that exactly describes the target data item. If the ‘employeeID’ is just a number, then the ‘numericString’ syntax should be used. It is possible to define new syntaxes, though these will require modifications to the directory server and user interface software. 
2.	The object class that attaches ‘employeeID’ to an entry. We’ll call this ‘localEmployee’. The object class has to define ‘employeeID’ as a mandatory attribute or an optional one. If it’s specified as mandatory then any staff entry created with the ‘localEmployee’ object class has to contain a value for ‘employeeID’.
Be wary that any attributes you define locally may not be supported by external directory services and thus will not necessarily be visible to external users. For this reason try not to extend local schema if the attributes defined contain generally useful information, especially if that information can be shoe horned into standard attributes. Although not always appropriate, the employee identifier outlined above could be stored in the ‘uniqueIdentifier’ attribute.
5.2	Organizing the Database Hierarchy
The design of the hierarchy is likely to be a trade off between the needs of the user and ease of data management. On the one hand the directory should contain all data required, be easily searchable and logical, and on the other information needs to be organized in such a way that the database is easily updated and, if necessary, merged with other sources. The security policy will also impact management aspects of the design. 
The X.500 directory standard contains a recommended hierarchy. This structure assumes that organizations are divided into organizational units (departments) and/or localities. Entries for people and roles are then held beneath organizational unit entries. This model is common in directory services implemented to date. However, the suggested model was devised by virtue of the fact that it reflected real world structure and to a certain extent, came about without a great degree of emphasis for management. In fact, several models can be used:
•	Organigram. Similar to the X.500 recommended model. Here the tree follows an organization’s management structure.
•	Locality oriented. This also has roots in X.500.
•	Data oriented. Here the DIT is structured into data units, where each unit contains a information on the basis of its function or management role within the directory.

Figure 5.1. Directory Hierarchy Based on Management Structure
The organigram model is structured around corporate management hierarchy. Upper levels consist of divisions, with subordinate departments below them (see Figure 5.1 for an example). Taking this to the furthest extent the tree could then consist of smaller management units.
This style of DIT is useful as directory names will contain information about the relevant position within the organization. This is especially beneficial for role entries, as the directory name of the entry will encode wider characteristics of the role (consider an entry with the RDN “CN=Manager”). This approach has associated drawbacks from the management perspective:
•	If many levels of organizational structure are reflected in the DIT then management overhead will increase as the database will be subject to greater change (due to movement of staff).

Figure 5.2. Locality Oriented Directory Hierarchy
•	If the directory is to slave data from a personnel database then mapping entries back into the appropriate position in the management hierarchy will be difficult.
A locality centred approach may be appropriate for geographically distributed organizations, especially multinationals. This approach has similar management properties to the organigram approach already outlined. It is, however, less helpful for users as directory names contain less useful information. For this reason a purely locational approach will probably have little real value, and some management structure is likely to be included, as shown in Figure 5.2.
This model is appropriate when the task of managing the directory is distributed in similarly locality oriented fashion. In Figure 5.2, data for the ‘London’ office may be better defined and maintained by IT staff at that site, etc.. Organizing the hierarchy geographically would then simplify the task of assigning management responsibility.

Figure 5.3. Data Organized by Access Area
In the data oriented model information is organized according to use and access. Doing so can have benefits for manageability and also for usability. Separating private and public data in this way makes secutiry mechanisms simpler to implement because access controls are easily applied to all entries in a subtree. In Figure 5.3 access control could be applied to the ‘ou=People’ subtree (hide a particular attribute for unauthenticated access, for instance), with  different restrictions applied to the ‘ou=Public Contacts’ subtree.
The data oriented model has several handy features:
•	Listings of specific data are easily browsed and searched, as with the ‘ou=Public Contacts’ area in Figure 5.3.
•	Data management responsibility can be assigned in a meaningful way. White Pages data (the ‘cn=People’ subtree in Figure 5.3) and functional data (‘cn=Public Contacts) could be maintained by different staff. Write restrictions enforcing this distribution of management are easily implemented using subtree-wide access controls.
•	Looking at Figure 5.3 again, the ‘ou=People’ subtree can be updated in relatively straightforward fashion (i.e. by deleting the subtree and reloading from a master source). 
5.3	User Accessibility
Aim to make the data as accessible as practically possible. This means that the database should be readable when browsing, and that the data should be amenable to ordinary search criteria. There are a number of steps that can be taken to accomplish these goals:
1.	Friendly naming. Ensure that entries are named in a meaningful way. This ensures that users browsing the database know what they’re looking at. In particular avoid the use of abbreviations and acronyms in names - these will be impenetrable to users who haven’t encountered them before.
2.	Use common variants. Ensure that entries contain variants of names that are likely to be used as search criteria. An entry named ‘cn=Joe Sidney Soap’ should also contain values for ‘cn=J Soap’, ‘cn=Joe Soap’ and ‘cn=J S Soap’. This will increase the probability of the entry being located by a search.
3.	Language variants. If the directory product you select supports different character sets then you may wish to store multi-language versions of the data you store. This is also useful where personal names contain extended characters, e.g. ‘Müller’ versus ‘Muller’.
6.	The Service Design
Remember that while users will make relatively infrequent use of the directory, its usage will effectively hold up wider activities if the service is either unavailable or inefficient. A user won’t be able to send a message to a new recipient until the destination address has been found and retrieved from the directory. The goal of the service design is to define a system that responds quickly to user requests and has high (ideally total) availability.
How well any directory request is handled will largely depend on bandwidth between the calling user and the directory server containing the target data. For small organizations the service will be handled adequately by a single directory server and all users will connect to that server. In certain situations more than one server will be required, an organization with several sites lacking strong network interconnections being the most obvious example. Here low bandwidth connections would limit the usability of the directory if one machine at a central site was used to service all requests. In this case, a simple solution is to install servers at each site and implement a data replication scheme so that each server holds a copy of the entire directory database. In this way every local user has fast access to a site-local access point, and with no need to resort to inter-site networking when resolving directory requests.
This approach is something of a simplification and solutions may vary depending on local requirements. In particular, the way data is distributed and managed across servers will affect the connection map and the replication strategy. In many systems the entire database will be mastered on a central server, with other servers just copying this data (as in the above example). Some circumstances may require that parts of the overall database be mastered across a number of servers. An organization with a number of geographically distributed offices might well master local data in a local server in order to permit update at source. In this case a more complex connection scheme will be required to achieve efficient user access.
As well as providing quick response, the service should be resilient to failure. Even if a single directory server can provide adequate total service, consider deploying a backup in case of failure. Likewise, when data is mastered across servers think about replicating data between them so that any database element is available from more than one server. If the mastering server fails, then a copy of the data will be present in another server. Bear in mind that the replication operation is not ‘free’ - some implementations may well slow down while the database is undergoing change. For this reason, data replication should be used judiciously, i.e. as an optimisation when service would otherwise be provided too slowly or when backups are required.
The following sections go over a few example solutions that should help you choose an appropriate architecture. Note that the more complex distribution schemes are specific to systems based on the X.500 architecture. Whilst LDAP directories possess some facilities for distribution of data, they are certainly not currently extensive enough to provide a large scale distributed service. 
6.1	Central Master
The database is managed in its entirety on a central directory server. If other servers are required to serve remote sites then they receive shadow copies of the entire database from the central server. Figure 6.1 depicts this model.

Figure 6.1. Centrally Mastered Data
Shadow updates should take place on a regular basis. If the database as a whole is small and changes infrequent, then updates should be triggered by modification to the master database. If the database is large and rate of change greater, then the update operation should take place at scheduled times (e.g. during periods of low network activity), in order to avoid undue load on connections between the master and its shadows. The scheduled approach means that the data contained in shadow servers will ‘lag’ the master copy between updates as changes to the master database are only reflected after a shadow update operation has occurred.

Figure 6.2. Distributed Server Architecture with no Replication.
6.2	Data Distributed Across Servers
A more complex approach is required if the database is not mastered on a single machine. In this case the solution taken will depend on the capacity of intermediate network connections. If all servers are strongly interconnected then requests can be chained between them (this is illustrated in Figure 6.2). When connections are weak then replication between some or all servers will be necessary in order to ensure adequate performance levels.
Looking at the example in Figure 6.2, if server 2 has low bandwidth connections to servers 1, 3 and 4, then their data should be replicated to server 2. This guarantees that users connected via server 2 will have fast access to the entire database. Similarly, servers 3, 4 and 1 should replicate the data mastered in server 2, in order to serve their users.
6.3	Widely Distributed Data
In very large and complex organizations data may be scattered across a great number of machines. Whilst replication will probably be required to optimise access across the database, care will have to be taken in order to avoid overloading. The following could cause problems:
•	A single server may not be capable of supporting the entire database. Putting too much in could result in slower response times.
•	Regular shadowing between every server may cause undue load on hardware, again slowing service.
•	A complicated replication scheme involving all servers will be difficult to define and manage.
•	If not all servers are fully interconnected comprehensive replication will not be possible anyway.

Figure 6.3. Replication Around a Backbone
In practice a hybrid scheme involving shadow ‘centres’ will have to be devised. Figure 6.3 depicts a replication scheme built around a server ‘backbone’. Here a set of ‘central’ machines are interlinked to form the backbone. Backbone servers copy data from those on a spine. Jointly all backbone servers then contain a copy of the full database. User requests coming via peripheral ‘data master servers’ need only go as far as the backbone for a response in the worst case.
7.	Security Policy
Whether you decide to permit external connections to your directory or not, access restrictions of some form will have to be applied. Database administrators will need some level of write permission, whilst ordinary users may only be given read access. If the directory is publicly accessible read restrictions might be applied to sensitive information, e.g. any home telephone numbers should only be readable by internal users. Legislation relating to personal privacy issues may also restrict the amount information you can publish.
Assess the security policy in light of prevailing organizational procedure, perceived business needs and the needs of people who need the directory (both internal and external). What data is currently deemed sensitive? Will the introduction of the directory force re-evaluation of policy? It may be the case that the paper phone book is regarded as an internal document only. The business needs driving the introduction of a public directory might change this.
You should start by identifying classes of directory user, or access groups. The set of access groups that you come up with will be linked to directory management, functional and usability issues. For a simple publicly accessible directory the groups might be:
•	Write permission to the entire database for system administrators.
•	Write permission to some part of the database for data managers (if different from the above).
•	Comprehensive read access for internal users.
•	Limited read access for unauthenticated (external) users.

Figure 7.1. Example Access Control Usage
These access groups could easily be extended - more restricted write permission may be given to line managers, or even to individuals (staff may be permitted to write their own descriptions and Web page pointers for example), a set of external users may be regarded as trusted and given wider read permissions, and so on. There are advantages to keeping things simple. A complex security policy will require a lot of detailed design and implementation work. Further, the live system will demand a greater level of management effort and be less user-friendly.
7.1	Restricting Access Using Access Controls
Usage restrictions will generally be implemented through the use of directory based access controls (these are described in Section 2.2.7). Access controls are used to deny or grant permission to perform an operation on a specified piece of information. Controls can be applied to individual entries or to subtrees of entries. Figure 7.1 above illustrates the way in which access controls are applied. Here a top-level access control item (ACI) is applied prescriptively across a number of entries in the subtree. The control in the figure denies access to personal telephone numbers for all users external to the organization. A second access control, applied to the single entry for ‘Joe Soap’, acts as an exception to this and makes the entry’s telephone number readable without restriction. The second access control takes precedence as it is more specific. This use of access control to implement exceptions should be avoided though as it is easy to get wrong. Such exceptions are also difficult to detect and change when overall changes are being made to the overall database.
The access control system defined in X.500 is very flexible. Many more combinations than shown in Figure 7.1 are possible. As a result it is tempting to design a highly functional system of access restriction. However, as stated, be careful not to allow the ‘weight’ of functionality to swamp available management effort. When this happens errors can and will occur and the integrity of the security policy will be difficult to maintain.
7.2	Restricting Access Using a Filtering Proxy
Another way of restricting access to internal data is to place a filtering proxy on the organizational firewall. All external connections to the directory service would go via the proxy, which can be configured to prevent all restricted data from leaving the local area network. In effect such a service would ‘bounce’ accesses to sensitive data, whilst allowing public data through the filter.
The advantage to this approach is that managers can be sure that the directory service will never communicate restricted data to service users outside the boundary of the local network. However, this also means that properly authenticated organizational users will not be able to access directory data if connecting from an external point.
7.3	Restricting Access Using Intranet and Extranet Services
Rather than providing limited access to a comprehensive enterprise directory, a simpler option may be to provide two separate directory services - one for internal use and for access by external users. The internal service would contain all information necessary for local use, and the external service tailored to provide access to the organization’s list of services, public contacts and other general information.
8.	Procurement
8.1	Evaluating Server Software
Ensure that software adheres to standard protocols and that interoperability has been demonstrated and proven. If interoperability is of sufficient quality then you should be able to select from a range of products. This means, for example, that you’ll have the freedom to purchase server and client software from different vendors. Similarly you’ll be able to choose products that match available platforms, which will be useful if your organization is a mixed hardware environment. As well as allowing you to select different products to match different needs, it means that other organizations can access your directory using their software. Most vendors submit their software to interoperability tests and you should ask for the results of these.
Although it is tempting to apply a ‘shopping list’ of features that you know about, you should only worry about functionality that you really need. Many offerings based on the X.500 standard, for example, will not actually implement the entire standard, only a practically useful subset. In cases where a future need has been identified, a complete access control system let’s say, ensure that a commitment to future development exists. Unfortunately, such promises are easy to make and even easier to break! Looking at current vendor roadmaps may be the best, or only option.
Here are some of the areas that you will need to check on for functionality, interoperability and performance:
•	Database read performance. Ask for demonstrations that show how well the product performs with large databases. The ability to run a search quickly through a large number of entries is important. You will also need to note down how well servers cope when large numbers of users are connected.
•	Access control and, if required, strong authentication. If possible ensure that configuration tools for access control are present, otherwise security management will be a scripting job and therefore require special work.
•	Replication. DSA performance is especially important if extensive data shadowing is required. If the DSA slows appreciably during shadow update operations then service levels will be reduced.
•	Are any data loading or synchronisation tools supplied with the server? Will they interface directly onto your existing databases, or does an intermediate conversion process need to be defined?
8.2	Evaluating User Interface Software
Interoperability is again important. The freedom to mix and match is fundamental as it improves accessibility and ensures that many different applications can make use of the service (and thus increase its value).
Desktop integration is high on the list of plus points. User interfaces will ideally work with the applications staff are using now, e.g. word processors, calendar/diary managers and e-mail interfaces. Again, clients that employ non-proprietary methods of integration are advisable as these will co-operate more easily with standard software. 
It may be appropriate to look at clients specific to an application. E-mail interfaces in particular may have an associated directory component that is capable of accessing your service. Latest versions of the popular communication suites from Netscape, Lotus and Microsoft are examples. 
The following general requirements should be addressed:
•	Functionality
The required functionality must be established and provided, thus ensuring that new users will perceive the directory service as a useful tool.
•	Look and Feel
The preferred ‘look and feel’ of the existing user environment must be maintained, thus minimising the impact of change to the office environment. Ideally the client will integrate well with existing tools.
Interface functionality will vary considerably between vendors. Again even though one vendor may produce the best server, another may offer the user interfaces that best match your requirements. The following check list should be used to evaluate user interface functionality:
•	Will the client support the types of searches required? Are search algorithms and filters configurable in terms of the attributes that the user can search on?
•	Does the client support browsing? How are size limits handled by the browsing interface?
•	Is the client capable of supporting all of the attributes that the organization requires? (E.g. does the client support ‘labeledURI’, ‘photo’, etc.?) Is it capable of presenting the information in the required (user-friendly) format?
•	Will the client integrate with the desktop in a standard way? MAPI, for example, is an address book API under Windows that many e-mail interfaces support. Are there any other (possibly proprietary) ways of pasting addresses into the recipient field? The more generic the integration method the greater the range of applications that will be able to talk to the interface.
•	Does it support LDAP or is it a pure DAP/X.500 implementation? Though DAP interfaces have some advantage over LDAP, e.g. DAP can support strong authentication, LDAP tools are more widespread and off the shelf packages are available.
•	Does the client run on the specific platform(s) required by our organization? Will it preserve the local look and feel?
•	Is secure access provided? If so does it support strong authentication (or something similar)?
•	Does the client provide data management functionality? If so, does it support the required level of functionality (i.e. addition, deletion, modification and renaming of entries)?
•	Is the client configurable for access to the global directory? Will it handle references to external DSAs?
8.3	Equipment Needs
Begin by estimating levels of usage, using this to determine the hardware requirement. It’s probably better to overestimate somewhat in order to allow for future growth and to allow for underestimates. Also be wary that relying on vendor produced figures may not provide a realistic assessment of software performance under real world conditions - such as how things run under a peak load, or over a period of days and months. 
Other factors are the level of resilience required and the overall size of the database. If resilience is an issue then backup machines may be needed.
It may be possible to combine a directory service with other services on the same machine, but the demands of each service must be considered if service is to be maintained.
9.	Service Roll Out
9.1	Awareness and Training
Ensuring that users are fully appreciative of what the directory can do is important, as this will help the service achieve it potential and maximise return. Awareness campaigns and training materials will be needed to accomplish this. Much of this will simply be published material, though some face to face training of help desk staff will be necessary. Of course friendly and intuitive user interfaces will help, though a degree of familiarity is often needed before functionality can be properly explored.
Special training will need to be given to database administrators. This applies equally to data administrators and system administrators. 
9.2	Installing Software
Client software will have to be installed on user machines. If a Web gateway is in use then timescales can be extended, as simple access will be catered for. Integrated desktop applications with higher functionality will require further installation effort.

10.	Maintaining the Service
Ensuring the integrity of the database is of prime importance. If information is invalid or out of date service loses a great deal of its value. Usage levels will drop and effort will have to be invested in order to bring the service back up to scratch and raise confidence levels. However, be aware that despite the best efforts errors will always occur and that your directory will rarely be completely correct.
Whatever you do in the initial phases long term maintenance costs will probably outweigh this effort. Much can be done to reduce maintenance overhead by considering the issue at an early stage. Ensure that the directory database isn’t too complex and doesn’t contain too much data. An information ‘heavy’ database will be inherently difficult to maintain. Locality information, such as building names and room numbers, may seem useful but in the long run will also lead to extra overhead in the case, say, when a department relocates. Making management processes simple and efficient is also likely to make them more rigorous - the less work there is to do, the less chance there is of things going wrong. There is then a trade off to be made between the richness of the directory and the required level of maintenance effort.
Reducing dependency on master sources of data will also go a long way to help. If the directory is loaded with data from a number of sources, try to reduce the number of these as the data merging process is itself likely to result in errors. Problems lie mainly in the correlation of data entries between databases. Suppose, for example, that the e-mail and human resources databases are used as master sources but different name forms are used in each. The address ‘Joe.Smith@soap.com’ may actually correspond to the database entry for ‘Joseph David Smith’. Cases such as these (and there may well be many) demonstrate why it may be difficult to relate the entries as there is not necessarily a simple and reliable rule for tying them together.
Make estimates of how much data change is likely to occur. The database will require update for many reasons:
•	Staff arrival and departure.
•	Internal staff movement, e.g. transfer or promotion.
•	Relocation of groups and individuals.
•	Change of addressing information, e.g. phone numbers, e-mail addresses, etc..
•	Personal name changes.
The rate of expected change coupled with the required tolerance to short term errors will dictate levels of maintenance effort. If tolerance is low and anticipated database changes regular then maintenance procedures should be defined well before the directory is in operation. The following sections explore some of specific tasks that may be undertaken, giving consideration to why these might be appropriate in a maintenance scheme.
10.1	Automatic Synchronisation with Master Sources
The directory is likely to make use of a number of master sources of data. The personnel database is one example, the e-mail address system another. The directory could be kept in step with these sources of information in several ways. The choice will largely depend on the nature of the master databases, and on how many of them there are. If the directory takes data from a single source (unlikely but possible) then directory update might be best fulfilled by periodic download. If multiple sources are involved then some merging of data will be necessary.
Data merging is problematic because it is often difficult to correlate information across databases. There are two main reasons for this:
•	Inconsistent naming. People may have different given names across databases, e.g. ‘Joe Smith’ and ‘Joseph Smith’ may be the same person. 
•	Non-unique naming. Two people in the same organization with the same name. This is made worse if they’re in the same department.
Obviously, the greatest problems will occur when a number of entire databases are merged and piped into the directory (the more names there are the greater the probability of name clashes and ambiguities occurring). For this reason any update processes that require data merging should be incremental, i.e. changes to the source data (in whatever form it is held) should be followed by a corresponding change to the directory (hence synchronisation). 
Ideally synchronisation process will be automated without any need for manual intervention. The only reliable way to achieve this given problems such as the above is to tag data across all databases with a unique identifier. This will make large scale data merging a much easier task by ensuring exact correlation between entries in all source databases. This, however, requires that all master databases are capable of holding unique keys in the first place. The chances are some manual input will be required to resolve inconsistent data found during synchronisation.
10.2	Manual Update at Source
One way of reducing the need for synchronisation is by implementing administrative procedures for directory update. Here, whenever staff movements occur the registration process will include a change to the directory database. Whenever new staff enrol the registration process will involve an addition to the directory. When staff are promoted or leave the equivalent change should be made. By and large, rolling small scale updates into everyday procedure will eliminate the need for merging data from master sources.
‘Registration at source’ will most likely begin in the personnel department, where all staff movement is recorded anyway. Alternatively the IT department may be the focus, especially when it is customary for all staff to be given access e-mail facilities as this will mean the e-mail database will contain all staff. In either case some merging of data will be required unless unified registration procedures can be defined. Generally speaking, if the personnel department is used as the trigger for addition of new staff to the directory then their e-mail addresses will have to be incorporated at a later date. Similarly, systems administration could add new computing users to the directory, but other information, such as job titles, fax numbers, etc., would have to be added separately. 
Registration may well be a stepwise process:
1.	Personnel adds new staff to the directory.
2.	The IT department registers new staff, but only if they already have a directory entry.
3.	The new staff member’s local manager updates the directory to contain localised information, such as room numbers, secretaries, phone numbers, etc..
For other changes, e.g. staff transfer or promotion, like procedures will have to be encoded into internal policy.
Obviously the ‘update at source’ concept will have to be adhered to rigorously or else errors will creep in and require later rectification. In practice management responsibility will have to be assigned to specific staff. This may mean the recasting of existing roles or require the uptake of new staff members acting as dedicated directory administrators. In this case all registration procedures will involve notification of change to the directory maintenance group, who should make the relevant changes to the database.
10.3	Integrity Checking
Mistakes will arise in the database, no matter what procedures are used for update. The most significant ones involve ‘dangling pointers’. Take for example a role entry that contains a ‘roleOccupant’ attribute pointing to a personal entry. If that person leaves and their directory entry is deleted then, without due care, the ‘roleOccupant’ pointer in the role entry would be left pointing to a non-existent entry. The same problem will arise for ‘seeAlso’, ‘secretary’ and, to a certain extent, ‘labeledURI’ attributes.
For directory entry pointers (‘seeAlso’, ‘roleOccupant’ and ‘secretary’) should be handled by data management tools, i.e. every time an entry is deleted or renamed perform a search on the database to ensure that no pointers to that entry exist. In cases where management tools don’t support this, mechanisms for ‘spring cleaning’ the directory should be installed. In general these can be performed automatically (which is just as well because checking manually would be a very time consuming and tedious process!) using a process like the following:
1.	Perform a subtree search for all entries containing, for example, ‘seeAlso’ attributes.
2.	For all ‘seeAlso’ attributes found perform a read on the DN pointer value.
3.	If any invalid DN pointers are found either delete them or flag them for attention.
A similar method could be used to check World Wide Web references contained in ‘labeledURI’ attributes.
Whilst such errors will build up over time, unless management procedures are badly out of step there should be relatively few mistakes and so database-wide integrity checks will not need to be performed on a regular basis. Monthly sweeps should be more than adequate on all except the largest and most volatile databases.
11.	Cost Analysis
This section presents a breakdown of the costs you can expect within the project life cycle, together with a look at the savings that should come about when the service is up and running. As with all IT projects a reliable cost benefit analysis is difficult to perform so be wary that any figures given here, though based on experience with several user sites, are estimates only and are derived using several assumptions. Actual costs and manpower required will vary considerably depending on circumstances. As such any figures provided in this section should be used for rough guidance only. The main use of this section is as a ‘shopping list’ of cost items which can be used as the basis for a more appropriate estimate of projected expenditure.
11.1	Outlay
11.1.1	The Development Phase
The length and cost of the development phase will vary considerably. Larger organisations will require greater planning effort as a result of more complex and distributed management models. Specific factors:
•	Multiple and varied data sources. Organizations may have distributed data sources. All e-mail addresses, for example, may not be managed at a single point, especially if the organisation is geographically distributed. Similarly different data sources may need to be employed for different kinds of information, e.g. the e-mail database for e-mail addresses, the internal phone book (if available electronically) for phone numbers, etc.
•	Multiple sites. An organisation with many sites will require a more involved service design, especially in the areas of replication and security.
•	Complex data model. A complex management model will correspond with a complex data model, especially if a functionality rich directory service is required.
•	External staff affiliation. Larger enterprises are likely to make use of non-permanent staff or have on-site workers belonging to closely co-operating external organisations. This means that a significant number of workers will contribute to the data management overhead - short term, contract or seconded staff may not be stored in the personnel database and will then require loading from other sources. The greater movement of such staff will also add to the total amount of change required in the directory database.
•	Politics. Co-operation is required between various management elements of the enterprise. The bigger an organization the greater the need for ‘buy in’ by and the subsequent backing of upper management.
Importantly the need for use of external expertise in the form of consultants will add heavily to the cost of service development. In most cases some outside help will be required. Here the discussion is based on the assumption that the service will not be outsourced but developed in-house with a certain amount of consultation taking place. Purchased bespoke solutions will of course carry their own price tags.
Development Activity	Medium Organizations
(500-1000 staff)	Large Organizations
(1000-5000 staff)	
Assess base position
•	Locate data sources.
•	Assess data maintenance requirement.
•	Examine network infrastructure.	1 man month	2 man months	
Specification
•	User survey.
•	Specific requirements.	1	2	
Schema Design
•	List entities.
•	Define attribute set.
•	Specify values (e.g. use of home phone numbers) and formats (e.g. multi-language representations).	1	2	
Service Design
•	Server topology.
•	Replication strategy.
•	Secure access.	1	2	
Maintenance Plan
•	Data merging issues and outline solution.
•	Synchronisation strategy.
•	Management procedures.
•	Initial data load.	1	3	
Procurement
•	Product evaluation.
•	Negotiation and purchase.	2	3	
Service Roll Out
•	Client deployment.
•	User awareness campaign. 	2	4	
Trial Period	1.5	3	
Total	11 man months	21 man months	
Table 11.1. Estimated Effort (man months) per Development Activity
Table 11.1 provides some estimates for the amount of manpower required for each stage of the development process. Actual manpower costs arising from the activity will derive from the proportion of effort assigned to external consultants and contractors.
Table 11.2 contains a calculation of costs that supposes that half of all effort is expended by consultants, with assumptions of cost per day and average days per month included the formula. As can be seen the estimates given paint a picture of a time consuming and expensive process. However, given suitable circumstances the effort required may be minimal. If a complete and easily accessible data source is found (a staff database containing all required information for example) and relevant or easily adaptable in-house expertise is available then the period between conception and delivery of an initial service could well be a matter of weeks. It is, however, wise not to underestimate the problems you’ll face, especially with respect to the data loading and maintenance problem.
Cost Area	Medium Sized Organizations	Larger Organizations	
Regular Manpower Costs	Man months		5.5
Working days		17
Cost per day (ECU)	600 
Cost 			56100	Man months		10.5
Working days		17
Cost per day (ECU) 	600 
Cost			107100	
Consultant Costs	Man months		5.5
Working days		17
Cost per day (ECU)	1200 
Cost			112200	Man months		10.5
Working days		17
Cost per day (ECU)	1200 
Cost			214200	
Total			168300 ECU			321300 ECU	
Table 11.2. Estimated Manpower Costs for Service Development (ECU)
11.1.2	Hardware and Software
The following elements should be factored into the cost equation:
•	Server software. This includes DSA software and, if required, Web gateways.
•	Hardware. Server machines will be required for DSAs. Other services, such as Web gateways, should fit onto the same machine as the DSA. 
•	Client software. This may include desktop access software and clients integrated into the office application suite.
•	Data management clients. If the basic client package doesn’t support small-scale update then a separate package may be required in order to support day to day management tasks.
•	Synchronisation tools. Most vendors provide a generic management tool that will manage data merged from a number of sources. Some bespoke work will be required if tools are needed to convert data to or from uncommon formats.
•	Firewall support. A directory service compatible proxy will be required for secure access through a firewall.
The number of machines and software licenses required will depend on the topology of the directory infrastructure and how much backup is required. Assuming the requirement dictates response times of a few seconds and twenty four by seven availability then backup for every server will be necessary.
A single directory server should be able to cope with a database consisting of tens of thousands of entries. Though this, of course, is influenced by the power of the hardware and the particular implementation used. As a very rough guideline expect to pay about 12000 ECU for a hardware platform (including OS costs and other support software) that will support at least 10,000 entries. A server license will cost between 1500 ECU and 3000 ECU, although the cost is likely to relate to the number of users or entries stored in the directory.
Be careful to include client costs in the expenditure. Desktop client software and Web access gateways should be relatively inexpensive. Desktop software may be as little as 2 ECU per head under a site licensing scheme. 
Table 11.3 lists some ballpark figures for initial software and hardware costs per 1000 users. The figures will scale depending on licensing schemes and the ability of hardware to cope with a given load.
Hardware/Software	Estimated Cost (ECU)	
Directory Server	3000	
Server Platform	12000	
Web Gateway	1500	
Client Software per 1000 users	3000	
Synchronisation Tools	2000	
Firewall Proxy Service	2000	
Total	23500	
Table 11.3. Outline Hardware and Software Costs Per 1000 Users
Obviously, licensing schemes are different for every vendor - some may price their products on a per server basis, others will use the number of users as a cost factor. Pricing will vary greatly according to the license scheme in use and your circumstances. For this reason, it should be stated that the figures given here are intended to give a rough guide only and should not be used as a foundation for precise costing.
11.2	Running Costs
Support Activity	Man Hours Per Week	
Database Maintenance
•	Adding entries, e.g. new staff.
•	Deleting obsolete entries, e.g. staff leaving.
•	Fixing erroneous data, e.g. after synchronisation activity. 	10	
User Support
•	Handling general user support requests.
•	Production and maintenance of training materials.	4	
System Maintenance and Supervision
•	Restarting crashed machines and software.
•	(Probably) handling and enforcing security measures.
•	Cleanup activities (e.g. removing old log files, etc.).
•	Performing periodic backups.	6	
Total	20	
Table 11.4. Estimated Support Effort Required Per Week Per 1000 Users.
The largest component of day to day costs will be the manpower expended in supporting the service. The effort required can be broken down into three areas. These, together with estimated man hours required per week per 1000 users, are listed in Table 11.4.
Other cost areas will be machine maintenance, the cost of software support and for upgrades. Table 11.5 contains total estimated expenditure in running the service for a year for a 1000 users.
Cost Area	Estimated Cost (ECU)	
Support Effort			Working days		  204
		Cost per day (ECU)	     600 
		Cost		           122400	
Server Maintenance	1000	
Software Support and Maintenance	1000	
Total	124400	
Table 11.5. Estimated Running Costs Per Year Per 1000 Users
11.3	Cost Benefits
If running costs are difficult to estimate, then actual savings are even more so. We can begin by listing the activity areas where the directory results in efficiency gains:
•	Speed of look up. Search and retrieval of internal information such as phone numbers, e-mail addresses and the like should take up a negligible amount of time. Average time saving per worker is difficult to assess - secretaries and phone operators will save a great deal, whilst workers small closed groups will result in less gain. Greater savings should arise with greater levels of internal communication and larger staff populations. Further savings will be made if the enterprise directory is part of a wider directory community of co-operating partner organisations. 
•	Data accuracy. The directory should improve the range, availability and quality of contact information. This will lead to reduction of time wastage stemming from misdirected e-mail and the need to redirect wrongly dialled calls.
•	Workflow applications. The directory can be used to support applications such as shared calendar and group collaboration software.
Without a proper study no real appraisal of the saving can be made. However, a conservative, though nonetheless ‘finger waving’, estimate of average saving may be half a man hour per person per week. The estimated saving per 1000 user organization year is then calculated as follows:
Man hour saving per week	0.25
Business weeks per year	46 x
Cost per man hour		50 x
Organization size		1000 x
Total saving			575000 ECU
Given the running cost figure found in section 11.2, this yields the net yearly saving:
Cost Saving			575000
Running Cost		124400
Net Saving			450600 ECU
Estimated running costs can be compared to the current costs associated with existing directories, i.e. maintaining the internal phone book, switchboard systems and proprietary electronic address books. To some extent data gathering and dissemination activities already exist within any enterprise, and the current cost of these should be factored into the benefit analysis.
Also remember that any predicted concrete savings ignore the added value that the directory brings about in enabling new applications, such as a public key infrastructure for secure messaging.

•	
1.	Bibliography
[Chadwick]	David Chadwick: “Understanding the X.500 Directory”, Chapman & Hall, London, 1994
[Huizer]	Erik Huizer (Ed.): “Building a Directory Service”, SURFnet bv, 1994
[Kille]	Steve Kille: “LDAP and X.500”, published in Messaging Magazine, September 1996, available at http://www.isode.com/ldapx500.htm
[McKinnon]	John McKinnon and Amanda Edwards: “Guidelines for the Deployment of a Corporate Directory - The Hitchhikers Guide to the X.500 Directory”,  EEMA Document
[RFC 1255]	The Directory Forum: “A Naming Scheme for c=US”, 09/05/1991
[RFC 1276]	S. Kille: “Replication and Distributed Operations extensions to provide an Internet Directory using X.500”, 11/27/1991
[RFC 1275]	S. Kille: “Replication Requirements to provide an Internet Directory using X.500”, 11/27/1991
[RFC 1274]	P. Barker, S. Kille: “The COSINE and Internet X.500 Schema”, 11/27/1991
[RFC 1308]	J. Reynolds, C. Weider: “Executive Introduction to Directory Services Using the X.500 Protocol”, 03/12/1992
[RFC 1309]	S. Hecker, J. Reynolds, C. Weider: “Technical Overview of Directory Services Using the X.500 Protocol”, 03/12/1992
[RFC 1330]	ESCC X.500/X.400 Task Force: “Recommendations for the Phase I Deployment of OSI Directory Services (X.500) and OSI Message Handling Services (X.400) within the ESnet Community”, 05/22/1992
[RFC 1355]	J. Curran, A. Marine: “Privacy and Accuracy Issues in Network Information Center Databases”, 08/04/1992
[RFC 1430]	S. Kille, E. Huizer, V. Cerf, R. Hobby, S. Kent: “A Strategic Plan for Deploying an Internet X.500 Directory Service”, 02/26/1993
[RFC 1617]	P. Barker, S. Kille, T. Lenggenhager: “Naming and Guidelines for X.500 Directory Pilots”, 05/20/1994
[RFC 1632]	A. Getchell, S. Sataluri: “A Revised Catalog of Available X.500 Implementations”, 05/20/1994
[RFC 1684]	P. Jurg: “Introduction to White Pages services based on X.500”, 08/11/1994
[RFC 1727]	C. Weider, P. Deutsch: “A Vision of an Integrated Internet Information Service”, 12/16/1994
[RFC 1798]	A. Young: “Connection-less Lightweight Directory Access Protocol”, 06/07/1995
[RFC 1781]	S. Kille, “Using the OSI Directory to Achieve User Friendly Naming”, 03/28/1995
[RFC 1777]	W. Yeong, T. Howes, S. Kille, “Lightweight Directory Access Protocol”, 03/28/1995
[RFC 1758]	The American Directory Forum: “NADF Standing Documents:  A Brief Overview”, 02/09/1995
[RFC 1803]	R. Wright, A. Getchell, T. Howes, S. Sataluri, P. Yee, W. Yeong: “Recommendations for an X.500 Production Directory Service”, 06/07/1995
[RFC 1804]	G. Mansfield, P. Rajeev, S. Raghavan, T. Howes: “Schema Publishing in X.500 Directory”, 06/09/1995
[Rose]	Marshall T. Rose: “The Little Black Book”, Prentice-Hall, Englewood Cliffs, USA, 1992
[X.500]	ITU-T Recommendation X.500 (1993): Information technology - Open Systems Interconnection - The Directory: Overview of Concepts, Models and Services
[X.501]	ITU-T Recommendation X.501 (1993): Information technology - Open Systems Interconnection - The Directory: Models
[X.511]	ITU-T Recommendation X.511 (1993): Information technology - Open Systems Interconnection - The Directory: Abstract Service Definition
[X.518]	ITU-T Recommendation X.518 (1993): Information technology - Open Systems Interconnection - The Directory: Procedures for Distributed Operation
[X.519]	ITU-T Recommendation X.519 (1993): Information technology - Open Systems Interconnection - The Directory: Protocol Specifications
[X.520]	ITU-T Recommendation X.520 (1993): Information technology - Open Systems Interconnection - The Directory: Selected Attribute Types
[X.521]	ITU-T Recommendation X.521 (1993): Information technology - Open Systems Interconnection - The Directory: Selected Object Classes
[X.509]	ITU-T Recommendation X.509 (1993): Information technology - Open Systems Interconnection - The Directory: Authentication Framework
[X.525]	ITU-T Recommendation X.525 (1993): Information technology - Open Systems Interconnection - The Directory: Replication