Method and server for accessing a network directory

Abstract: A computer-implemented directory access mechanism provides a directory service operable to access a network directory under a predetermined protocol by responding to an access request under the protocol for information available in a predetermined environment external to the directory. The directory service then uses the access method for the environment to access the information available in the environment. In this manner, data in the given environment can be accessed by a directory service operable under the given protocol by configuring an attribute access method and using this method to retrieve the information. The protocol can be the Lightweight Directory Access Protocol. The information to be accessed could typically be an attribute of an entry in the directory. An access control list (for example the Directory Access Control Domain) can contain not only control access rights for directory objects, but also the access methods for attributes of the directory objects.

Description: BACKGROUND OF THE INVENTION This invention relates to a directory access mechanism, for example access mechanisms based on Directory Access Control Domains (DACDs) on the Internet. The popularity of directory servers based on ISO/CCITT X.500 model has increased with the wide support by the industry of the Lightweight Directory Access Protocol (LDAP). LDAP is defined by RFC 1777. There is a desire to try to integrate heterogeneous information in these directories by either moving the data from their old format to this new model, or to map the old model into the X.500 model. However, this is not straightforward and has practical difficulties. The directory services under the X.500 model are based on an object hierarchy, with each node in the hierarchy corresponding to a given level of detail. A particular location in the hierarchy is identified by the sequence of nodes down the hierarchy from the root or base node to the node in question. Each entry in the hierarchy sets out attributes for the entry. Although there is a single logical hierarchy, parts of the hierarchy can be physically separated. In order for the practical hierarchy to operate, therefore, each node identifies the physical location of the adjacent nodes down the hierarchy. To access the hierarchy, access control lists are provided. These can be provided at nodes throughout the hierarchy and define access control rights for different users and/or bodies. The access control rights relate to areas of the local structure (domains) of the hierarchy and not to the physical locations of the nodes of the attributes for the hierarchy. Thus, if it is intended to provide access under the LDAP, for example, to information created under a pre-existing, non-X.500 format, it is necessary to copy the whole of the previous directory to the new directory accessed through LDAP. An article entitled "Tie it all together: Directories have grown in complexity and size but there are ways to control the chaos" (Bruno, L., Data Communications vol. 26 no. 3, 1 March 1997 p.75-83) describes a method of unifying the contents of directory data spread across different platforms and supported by different protocols through the use of software agents that constitute the metadirectory, a central repository directory maintained and kept appraised of any updates to the directories by these software agents. An article entitled "Building a meta-directory solution with Netscape Directory Server" (Netscape Corp., Rubinoff, http://people.netscape.com/rubinoff/sso) describes a method of making legacy data available to the Netscape Directory Server product. A Virtual Directory feature (p.5) is used to redirect incoming LDAP queries to legacy data stores without moving or synchronizing the legacy data. An article entitled "Active Directory Service Interfaces: The Easy Way to Access and Manage LDAP-based Directories" (Microsoft Corp, White Paper, 1997, http://www.21 st -century.net/Pub/Internet/Servers/Directory/ADSI/ADSI%20Whitepap er.doc) describes the use of Active Directory Service Interfaces (ADSIs) to implement the LDAP. The ADSIs are programming interfaces that a user can use to write applications for the management of LDAP-enabled directories. An article entitled "Microsoft Active Directory Service Interfaces: ADSI Open Interfaces for Managing And using Directory Services" 1997, http://www.21st-century.net/Pub/Internet/Servers/Directory/ADSI/ADSI% 20 Whitepaper.doc) details how the user must implement these APIs in order to manage directories. SUMMARY OF THE INVENTION Various aspects of the invention are set out in the accompanying independent and dependent claims. In accordance with a first aspect of the invention, there is provided a directory access method, implemented by computer. The method comprises steps of: i) a directory service operable to access a directory under a predetermined protocol responding to an access request under said predetermined protocol for information available in a predetermined environment external to said directory, wherein said environment operates under a different protocol; and ii) said directory service using an access method for said environment to access said information, characterised in that said access method is retrieved from a Directory Access Control Domain object for a domain of said directory. Thus, an embodiment of the invention enables a directory service operable under a predetermined directory access protocol to access data in a predetermined protocol environment (e.g. data stored in accordance with a different storage model from that on which the predetermined directory access protocol is based, or a different physical location, or a different protocol) by configuring an attribute access method and using this method to retrieve the information from, for example, a directory operable in the predetermined environment. In one embodiment of the invention the access method configuration is achieved by extending a domain definition normally used for access control. Where reference is made to an access method, this forms an access process or procedure, typically implemented by a set of access parameters or computer instructions or a combination thereof. The access method is retrieved via a domain definition for a domain of the directory. The domain definition can also include access control information. In one particular embodiment of the invention, the directory is defined under X.500. The domain definition can include a pointer to an access method for the domain in the environment, possibly stored externally to the directory or possibly stored with a definition of a node in the directory. In one particular embodiment of the invention, the protocol is the Lightweight Directory Access Protocol. The information to be accessed could typically be an attribute of an entry in the directory. Thus, a particular embodiment of the invention uses the Directory Access Control Domain (DACD) as defined in the ISO/CCITT X.501(1993 E) specification not only to store access rights but also to store access methods. The access method points to a directory entry storing the specific access method parameters. In accordance with another aspect of the invention, there is provided a directory server for a computer network, said directory server comprising: a directory service operable to access a directory under a predetermined protocol; at least one identifier of an access method for access to information in a predetermined environment external to said directory, wherein said environment operates under a different protocol; said directory service being configured to respond to an access request under said predetermined protocol to access said information in said environment using said access method identifier, characterised in that said at least one access method identifier forms part of a Directory Access Control Domain object for a domain of said directory. The invention also provides a computer program product on a carrier medium, said computer program product being operable to carry out the steps of the method as set out above. BRIEF DESCRIPTION OF THE DRAWINGS Exemplary embodiments of the present invention will be described hereinafter, by way of example only, with reference to the accompanying drawings in which like reference signs relate to like elements and in which: Figure 1 is a schematic representation of a directory structure for a directory service; Figure 2 is a schematic representation of a telecommunications environment including a plurality of stations interconnected via a network; Figure 3 is a schematic representation of a client server station; Figure 4 is a schematic representation of a directory server; Figure 5 is a schematic representation of a message format for a directory access protocol; and Figure 6 is a flow diagram of the operation of a directory controller. DESCRIPTION OF EMBODIMENTS Figure 1 is a schematic representation of a conventional directory information structure arranged as an object hierarchy. The directory information structure enables information on network users and resources to be stored. The directory structure comprises, for example, a tree-shaped hierarchy 2 of nodes 3, 4 etc leading from a root node 3 to a plurality of entries 5 forming the leaves of the hierarchy. Within the hierarchy, there are defined domains, for example domain A 5 and domain B 6. Associated with a domain, there is defined an Access Control List (ACL). The ACLs define access control rights for different users and/or bodies. The ACL for a given domain is associated with the highest node within the domain and defines the access control rights for the domain. The ACL has the required granularity, but not the semantic of the access method. For example, it could not be possible to define that entries such as telephone numbers are stored in one database and entries e-mail addresses are stored in another database. As a result, integration of non-X.500 based attribute data is not possible according to the conventional model without copying all of the original information into the entries concerned. For example, if e-mail addresses for the entries 5 in domain A were stored in a different database, it would be necessary to make a complete copy of that information into the database for the entries 5. Figure 2 of the accompanying drawings is a schematic representation of an instance of a computer network where a five stations 10, 12, 14, 16 and 18 communicate via a network 20. The network could be a local area network (LAN), wide area network (WAN), or an intra- or Inter-network. Each of the stations could be formed by a single computer or by a network of computers, for example a LAN or WAN. Also, although only five stations are shown, it will be appreciated that a typical computer network includes many more stations arranged in a complex interconnection structure. The interconnection structure could be at one logical level, or could employ at least in part a hierarchical structure. The individual stations can make variable demands on the system, both relative to each other and over time. In a typical situation, a relatively smaller number of the stations will form server stations and a relatively larger number of the stations will form client stations. In Figure 2, stations 10 and 18 are assumed to support a directory service master and a directory service slave, respectively, and that stations 12, 14 and 16 support appliances including a Directory User Agent (DUA). Particular embodiments of the invention will now be described which are based on the LDAP protocol in the context of an Internet application. However, it will be appreciated that the invention is not limited thereto, and that the invention finds application to any communications network application where it is desired to integrate directories operable under different protocols. In a specific embodiment of the invention, the Directory Access Control Domain (DACD) as defined in the ISO/CCITT X.501(1993 E) specification is used, not only to store access rights but also to store access methods. The access method can point to a directory entry storing specific database access method parameters, whereby it is possible to leave the non-X.500 data in its original location, and still be able to access the information using LDAP. Figure 3 is a schematic block representation of an embodiment of the invention. In Figure 3, a directory service 32 includes a directory database 34 located on a server 30. The directory database 34 contains an X.500 directory database. A Directory User Agent (DUA) 38 for an appliance 36 forms a directory user client in the X.500 model for accessing the directory service 32 to read information from or to write information to the directory database 34. It will be appreciated that there will typically be a large number of appliances and DUAs 38 requiring and making access to the directory service 32. Only one appliance 36 and DUA 38 are shown in Figure 3, however, for illustrative purposes and ease of explanation. Access by the DUA 38 to the directory service 32 is by way of request 40 and response 42 messages under a conventional protocol, here LDAP. Thus, the client 38 will solicit one or more response messages 42 by issuing a request 40 to the directory service 32. The request message 40 may be a request for information about, for example, an attribute of a network user or a network resource (for example an Internet protocol (IP) address for the user or resource). The server 30 will then return one or more response messages 42 to the request 40. The request and response messages will be linked to each other by the use of related message identifiers in the messages, typically in headers for the messages. Also shown in Figure 3 is a further database 48, on a further server 44. The further database 48 may form part of another directory service operable under another protocol, or may simply be a database containing information relevant to the database on the directory server 30 but in a non-compatible format. In the present example it is assumed that the further database 48 is a switch database for a public switched telephone network switch 46. The switch database 48 contains telephone number information, at least some of which numbers relate to entries in the directory database 34. In an embodiment of the invention, the directory service 32 at the server 30 comprises a DACD mechanism which defines not only access rights for domains but also access methods. The DACD mechanism can be constructed in accordance with ISO/CCITT X.501 (1993 E) except that it stores not only information relating to access control rights (i.e. who can access what) but also information about access control methods (i.e. how to access what). In a preferred form of the invention, the access control methods in the DACD mechanism comprises pointers to directory entries containing specific database access parameters. In this manner, integration of non-X.500 database attributes is possible without having to copy all of the database attributes to an X.500 format. Figure 4 is a schematic representation of aspects of a directory service master 32 of an embodiment of the invention relevant to an understanding of the invention. The directory service includes the directory database 34 and a directory controller 60. The directory controller 60 is responsive to a request message 40 from a DUA 38 to perform the operations necessary with respect to the database 16 and to return one or more response messages 42 to the user. Figure 5 contains a schematic representation of an LDAP message format (LDAP message) 50 which provides an envelope containing common fields required in all protocol exchanges. The LDAP message provides a sequence with a message identifier (message ID) 52 followed by a protocol operator (protocol OP) 54. The message ID has a unique value compared to that of all other outstanding requests in an LDAP session. The message ID is echoed in all responses corresponding to a request in which the message ID was initially used. The protocol operation specified by an LDAP message can conventionally be selected from the following types: bindRequest - initiates a protocol session between a client and a server and sets out the parameters for the session; bindResponse - returns an indication of the status of the client's request for initiation of a session; unbindRequest - terminates a session and has no response defined; searchRequest - enables a client to initiate a search and defines: the base object in the directory with respect to which the search is to be performed; the scope of the search to be performed; an indication of how aliases are to be handled; a maximum search result size to be returned; a time limit for the search; indication of which attributes are to be returned and whether attribute types and/or values are to be returned; and a filter defining match characteristics; searchResponse - returns the response to a search request, wherein a sequence of responses will typically be necessary in order to return the full response to the request from the client; modifyRequest - enables a client to request modification of an object in the directory; modifyResponse - returns the result of the modification request; addRequest - enables a client to request addition of an object to the directory; addResponse - returns the result of the addition request; delRequest - enables a client to request deletion of an object to the directory; delResponse - returns the result of the deletion request; modifyRDNRequest - enables a client to request modification of the last component (Relative Distinguished Name) of the name of an entry in the directory; modifyRDNResponse - returns the result of the RDN modification request; compareDNRequest - enables a client to compare an attribute value with an entry in the directory; compareDNResponse - returns the result of the comparison request; abandonRequest - enables abandonment of a request. Thus the directory controller 60 is arranged to perform the operations necessary to be able to return the appropriate responses to the different requests identified above. In responding to an access request, the directory controller 60 is responsive to a DACD 62 to identify a pointer 64 to a directory entry 66 containing database access control parameters for a database in the requested attributes are stored. Thus, it is possible, for example, to specify that telephone numbers attributes are to be retrieved from the telecom switch equipment at the switch 46 directly through the access method appropriate for the switch (e.g., by direct access to the switch database 46, or by use of a proprietary protocol) without any copy of the telephone number needing to be kept in the directory database 34. Thus, when a read request for the telephone number of an entry in the directory database 34 is received by the directory server 32 under LDAP, the telephone number attributes are not read from the directory database 34, but instead are read from the switch database 48 using the specific access method. Figure 6 is a schematic flow diagram illustrating the operation of the directory service controller 60. In step 110 a request is received from a DUA 38. The request can be, for example, a request to search for an attribute (e.g. a phone number) of a given distinguished name (DN), e.g.: Search DN = <ANY DN> phone number Here the distinguished name relates to an entry in the directory hierarchy, <ANY DN> relates to an appropriate key along the directory hierarchy chain and 'phone number' relates to the attribute being searched. In step 112, the directory service controller 44 looks at the DACD for the appropriate domain in which the distinguished name is found to determine if an access method is identified for the attribute concerned. If no access method is identified, then, in step 114, the directory controller accesses the requested access method from the directory database 34. If an access method is found, then, in step 116, the directory controller retrieves the requested attribute using the access method concerned (for example by the issue of an appropriate GET message) and waiting for the response message. The access methods could be defined statically or dynamically at each node in the directory database 34. Following step 114 or step 116, the accessed attribute is returned in step 118. Although the present invention has been described specifically in the context of LDAP-based directory servers to permit the integration of non-X.500 data by employing ACLs to not only control access rights but also to define access methods, it will be appreciated that the invention can also be applied to other directory storage protocols. Indeed, the invention more generally provides the use of access control lists to define not only control access rights, but also to control access methods. More generally, an embodiment of the invention can provide access to data in a predetermined environment (e.g. data stored in accordance with a different storage model from that on which the predetermined protocol is based, or a different physical location, or a different protocol) by configuring an attribute access method and using this method to retrieve the information from, for example a directory operable in the predetermined environment. Also, although the storage of the ACL information has been described as being in the directory server, storage external to the directory server (e.g., in flat files) could also be employed. Further, the storage of the ACL information could be in the entry at the top of the subtree defined by the DACD, or indeed in all the entries in the DACD. Indeed, the location of the storage of the ACL information could be chosen according to a particular implementation or application. Accordingly, it will be appreciated that although particular embodiments of the invention have been described, many modifications/additions and/or substitutions may be made within the scope of the present invention.

Claims: A directory access method, implemented by computer, the method comprising: i) a directory service (32) operable to access a directory (34) under a predetermined protocol responding to an access request (40) under said predetermined protocol for information available in a predetermined environment (48) external to said directory, wherein said environment operates under a different protocol; and ii) said directory service using an access method for said environment to access said information, characterised in that said access method is retrieved from a Directory Access Control Domain object for a domain of said directory. The method of Claim 1, wherein said Directory Access Control Domain object also comprises access control information. The method of Claim 1 or Claim 2, wherein said directory is defined under X.500. The method of any one of Claims 1 or 3, wherein said Directory Access Control Domain object comprises a pointer to an access method for said domain in said environment. The method of Claim 4, wherein said access method is stored externally to said directory. The method according to any one of Claims 1 to 5, wherein said access method is stored with a definition of a node in said directory. The method of any preceding claim, wherein said protocol is the Lightweight Directory Access Protocol. The method of any preceding claim, wherein said information is an attribute of an entry in said directory. A directory server (30) for a computer network, said directory server comprising: a directory service means (32) operable to access a directory (34) under a predetermined protocol; at least one identifier (64) of an access method for access to information in a predetermined environment (48) external to said directory, wherein said environment operates under a different protocol; said directory service means being configured to respond to an access request (40) under said predetermined protocol to access said information in said environment using said access method identifier, characterised in that said at least one access method identifier forms part of a Directory Access Control Domain object for a domain of said directory. The server of Claim 9, wherein said Directory Access Control Domain object also comprises access control information. The server of Claim 9 or Claim 10, wherein said directory service means is defined under X.500. The server of any one of claims 9 to 11, wherein said Directory Access Control Domain object comprises a pointer to an access method for said domain in said environment. The server of Claim 12, wherein said access method is stored externally to said directory. The server according to any one of Claims 9 to 13, wherein said access method is stored with a definition of a node in said directory. The server of any one of Claims 9 to 14, wherein said protocol is the Lightweight Directory Access Protocol. The server of any one of Claims 9 to 15, wherein said information is an attribute of an entry in said directory. A computer program product on a carrier medium, said computer program product being operable to perform the method of any of claims 1 to 8.

Inventors: DULOUTRE SYLVAIN, MARTIN JEAN-CHRISTOPHE, DULOUTRE, SYLVAIN, MARTIN, JEAN-CHRISTOPHE
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 1999
Main classification: H04L29
IPC codes: G06F13, H04L29, G06F12, G06F15