Centralized directory services supporting dynamic group membership6366913Abstract A method whereby application and network services (such as access control and electronic mailing list servers) can use a directory service to define groups of directory members using a directory search specification evaluated at service delivery time (dynamic group membership.) Traditionally, network services have been delivered to groups of users defined in relatively narrow manners: either by keeping a list of all users who are members of the group, or by attaching specific group membership attribute information to the information maintained about each specific user. Dynamic group membership allows these services to be delivered to groups of users who can be defined by a completely arbitrary specification of user attribute information. For example, electronic mail can be sent to a group of users whose office was located in a certain building (specifically, whose office location attribute matched a specific value.) Another example is that users may be permitted to access a network service, such as a printer, based on whether the printer is in the same building as the user (specifically, whether the printer's location attribute matches the user's office location attribute). Claims What is claimed is: Description BACKGROUND OF THE INVENTION
Person Building Department
John Building: 10 Engineering
Jane Building: 11 Dept: Sales
Jim Building: 10 Dept: Sales
A Dynamic Group filter can be thought of as creating sets of members in the directory, using their attributes. Using the above people, one can create two groups, i.e. `People in Building 10` and `People in the Sales department`
People in building 10 People in the Sales department
John (Building: 10 Dept: Engineering)
Jane (Building 11 Dept: Sales)
Jim (Building: 10 Dept: Sales) Jim (Building: 10 Dept: Sales)
One can create a number of sets based on a mixture of the attributes available for every individual. Dynamic groups also use the tree structure that many directories are based on. These take a form such as below (common in X.500 and LDAP directories): ##STR1## Dynamic Groups have the capability of taking names from only a part of the tree. In the preferred embodiment of the invention, two parameters are used to determine what portion of the directory tree to search, i.e. baseDN and Scope. These are both LDAP parameters for describing the directory. baseDN is a node on the tree (e.g. ou=Engineering, o=Airius Corp.); and Scope defines how many levels of the tree below the baseDN to use (base=only use that one node, one=use only all entries immediately underneath the baseDN node, or sub=use all entries under the baseDN node) For example, using the tree above: A dynamic group with a baseDN of organizational unit (ou)=Engineering, organization (o)=Airius Corp., and Scope=one would contain Bob James and George Palm. One with the same baseDN but Scope=sub would contain the above plus John Johns, Josh Franks, Jane Doe and Molly McGraw. And a group with a baseDN of person's common name (cn)=Ann Snider, ou=Marketing, o=Airius Corp. and Scope=base would only contain Ann Snider. The two paradigms (and three parameters) above can be combined. For example, if John Johns is in Bldg. 5, Josh Franks is in Bldg 7, Jane Doe is in Bldg 6, Molly McGraw is in Bldg 7, Bob James is in Bldg 4, and George Palm is in Bldg 4: Creating a dynamic group with a filter of Bldg=7, baseDN of ou=Engineering, o=Airius Corp, and Scope=sub using the tree paradigm produces a potential set of members containing: John Johns, Josh Franks, Jane Doe, Molly McGraw, Bob James, and George Palm. Applying the filter criteria creates a group that contains Josh Franks and Molly McGraw. A dynamic group is any set of users in which membership is dynamically determined. This contrasts with static group membership, in which a user entry includes an attribute which explicitly lists group members. In one embodiment of the invention, a dynamic definition of group membership is an LDAP URL, e.g.: Idap;///ou=marketing,o=acmecorp,c=US??sub?(mail=*) Mail sent to a group with this mgrpDeliverTo attribute sends the message to all people (with mail addresses) that are in the marketing tree of Acme Corp. For more information regarding LDAP, see Lightweight Directory Access Protocol, RFC-1777; A String Representation of LDAP Search Filters, RFC-1558; The String Representation of Standard Attribute Syntaxes, RFC-1778; A String Representation of Distinguished Names; RFC-1798 Connectionless LDAP, RFC-1779; The LDAP Application Program Interface, RFC-1823; and An LDAP URL Format, RFC-1959. In the presently preferred embodiment of the invention, the Idap URL structure is: Idap://server:port/baseDN?attribs?range?filter In which: server:port--are the server/port of the directory from which to get the entries. baseDN--This is the base DN in the directory from which searching is performed. attribs--This is a list of attributes to retrieve from the entry. This parameter of the URL is not used in dynamic groups. range--describes how many levels in the tree below the baseDN to search (BASE/ONE/SUB). filter--This filters out which entries from the tree are desired (e.g. in the example above, only those entries having mail addresses). Applications supporting any kind of group typically are interested in performing two functions involving the group: Enumerate the members of the group. For example, a mail delivery agent might do this when delivering a piece of mail to the group, which involves placing a copy of the mail in each group member's electronic mail box. Additional information (e.g. mail box location) may be needed for each member. Verify membership in the group. For example, a web server answering a query for a web page accessible only to members of a given group, might do this to ensure that the client requesting access was indeed a member of the group in question. The following discussion examines how each of these functions works for both static and dynamic groups. This discussion is followed by a description of an instantiation of the invention as embodied in two products from Netscape Communications Corporation, i.e. Directory Server version 1.0 and Messaging Server version 3.0. Membership Enumeration FIG. 1 is an illustration showing a view of a directory (partial contents). For static groups, the membership enumeration function is performed by reading the group and stepping through the attribute values returned comprising the membership list. If information on each member is desired, a separate read of each member requesting the desired information is performed. FIG. 2 is an illustration showing a view of static groups (Engineering and Marketing Groups). The directory operations required are summarized below. One search returning one group entry containing membership list. N searches, each returning information for each member. FIG. 3 is an illustration showing a view of dynamic groups (Engineering and Marketing Groups) according to the invention. For dynamic groups, the membership enumeration function is performed by reading the group and retrieving the membership criteria. A subsequent search based on the membership criteria is initiated. Stepping through the results of this search produces the membership list, along with any desired information for each member. The directory operations required are summarized below. One search returning one group entry containing membership criteria. One search returning N member entries containing desired information. As can be seen, the order of work is similar in both cases, and is linear in the number of group members. Membership Enumeration Efficiency There are a number of factors one could use to evaluate the efficiency and performance of a group membership enumeration. In the context of a network-accessible directory, the factor that typically contributes the most to overall performance is the network cost of performing the evaluation. Network cost can be broken into several components, including: Amount of data that must be transferred Number of network round trips required Cost of each round trip Because the cost of each round trip is the same in both comparisons, it is assumed that each such transaction comprises one constant unit. Accordingly, this cost is ignored in the following analysis. As used herein, the term "enumeration," for example where required by a mail server delivering a piece of electronic mail to the members of a group, is defined as retrieving some piece of information on each group member (e.g. an email address). This operation is used herein to compare static versus dynamic group efficiency. Static Group Network Cost FIG. 4 is an illustration showing a view of a directory after updates. FIG. 5 is an illustration showing a view of static groups (each group updated, three updates in this example). Using the above stated definition of enumeration, the interaction for a static group with N members is as follows. Client reads the static group, including its membership list, from the directory. This requires one network round trip and order N data to be transferred. For each group member, client reads the member's entry, requesting the desired piece of information. This requires N network round trips (one for each member), and order N data to be transferred. Therefore, the total number of network round trips is N+1 (order N). The total amount of data transferred is order N. Dynamic Group Network Cost FIG. 6 is an illustration showing a view of dynamic groups (no updates required) according to the invention. Using the definition of enumeration set forth herein, the interaction for a dynamic group with N members is as follows. Client reads the dynamic group entry, including the membership criteria, from the directory. This requires one network round trip and a constant (order 1) amount of data to be transferred. Client searches the directory using the membership criteria, requesting the desired information for each entry returned. This requires one network round trip, and order N data to be transferred. Therefore, the total number of network round trips is one (constant). The total amount of data transferred is still order N. Clearly, the dynamic group invention described herein is more efficient in number of network round trips, and no less efficient in the amount of data transferred. Membership Evaluation For static groups, the membership evaluation function is performed in one of three ways: Method 1: The group and its membership list are read, and the membership list is consulted locally to determine whether the given entry is a member of the group. Method 2: The group is searched, with a filter testing for the presence of the purported member. A successful return indicates membership, an unsuccessful return indicates non-membership. Method 3: The directory is searched with a filter selecting all groups of which the purported member is a member. The resulting list of entries is consulted by the client to see if the group in question is listed, in which case membership is confirmed. Otherwise, membership is denied. The directory operations required are summarized below. Method 1: One base search to read the group, member list is looked through locally. Method 2: One base search of the group entry, member list is looked through by the server. Method 3: One search of the directory, resulting entries are looked through by the client. For dynamic groups, the membership evaluation function is performed in the following way: The purported member's entry is examined to determine if it is within the scope of the group's membership criteria. Then, the purported member's entry is searched with a filter corresponding to the group's membership criteria. A successful return indicates membership, an unsuccessful return indicates no membership. The directory operations required are summarized below: One base search to retrieve membership criteria. One base search to determine if purported member fulfills criteria. Membership Evaluation Efficiency Membership evaluation as defined herein is the process of determining whether a given member M belongs to a given group G. In evaluating the efficiency of this operation, the network factors of round trips and data transferred are examined. Assume a group with N members, and that the user in question is a member of T groups in total. Static Group Network Cost Previously, three methods of evaluating static group membership were described. Each method's cost is detailed below: Method 1 Retrieve the group, including membership list, and search through the members to see if M is present. The total number of network round trips is constant. The total amount of data transferred is order N, with the size of the group. Method 2 Search the group with a filter testing for the presence of member M. The total number of network round trips is constant. The total amount of data transferred is constant. Method 3 Search the entire directory with a filter testing for the presence of member M, retrieving each group that matches. Look through the resulting list of groups to see if G is present. The total number of network round trips is constant. The total amount of data transferred is order T, where T is the number of groups to which M belongs. Dynamic Group With a dynamic group, the following method is used to test for membership in the group. Read the group to retrieve the membership criteria. Use the membership criteria in a search of the purported member M to test for membership. The total number of network round trips is two. The total amount of data transferred is constant. Comparing to static groups, the number of network round trips is the same (both constant). The total amount of data transferred is constant only for one static method. Instantiation of Invention in Preferred Embodiment FIGS. 7a and 7b provide block schematic diagrams that show a presently preferred implementation of the invention, in which the use of dynamic groups in Netscape Messaging Server version 3.0 and Netscape Directory Server 1.0 to route mail to groups of users is described. The invention is used in other ways in Netscape products; but this description details an initial use of the invention and illustrates the invention's mechanics. It will be appreciated by those skilled in the art that the invention may be implemented in other ways and applied to other environments. The Messaging Server 10 uses the Directory Server 20 to maintain information about the users for whom it delivers and stores electronic mail. Each user is represented as an inetOrgPerson object 30 (see Table "A" below for the structure of inetOrgPerson.) For a user to receive mail on a Netscape Messaging Server, a class of attributes known as a mailRecipient object 32 is combined (or "mixed-in") with the inetOrgPerson object (100) (see Table "B" for the structure of the mailRecipient object.) The mailRecipient attributes contain essential information which identifies the name of the Messaging Server that stores the user's mail (i.e. the mailMessageStore attribute), the user identifier used by the user to login to the Messaging server (the uid attribute), along with electronic mail addresses that identify the specific user (i.e. the mail and mailAlternateAddress attributes.) In addition to maintaining individual user information, the Messaging Server maintains information about groups in the Directory Server using the mailGroup object 34 (see Table "C" for the structure of the mailGroup object.) When the Messaging Server determines that it needs to deliver a message to a group, it retrieves the group's mailGroup attributes (110). The Messaging Server handles static members first, by sending the message to each address listed as a mgrpRFC822MailMember attribute (there can be more than one instance of this attribute in a mailGroup object.) In addition, the Messaging Server implements dynamic groups. Specifically, the mgrpDeliverTo attribute can contain a search specification, referred to herein as an LDAP URL (Lightweight Directory Access Protocol Uniform Resource Locator), which the Message Server sends to the Directory Server (120). This search specification causes the Directory Server to return a set of users or group objects (130). The Message Server then causes the message to be sent to each of the users or groups returned by this search (140). As described above, the LDAP URL takes the form: Idap://[server:port]/[baseDN]?[attrs]?[level]?[filter]. The Messaging Server connects with the Directory Server to perform the dynamic search. The mailRecipient attributes are then read from the entries found by the search, enabling mail to be sent to those recipients. Also, it is allowed for members of a dynamic group to be other groups (even other dynamic groups). In that case, those groups in turn are expanded, and their members also receive the email.
TABLE A
Attributes of an LDAP-based inetOrgPerson Object
Attributes Attribute Description
Common Name (Required) Defines the person's
common name.
Surname (Required) Defines the person's
surname, or last name.
BusinessCategory Identifies the business in which the
person is involved.
CarLicense Identifies the person's car license plate
number.
DepartmentNumber Identifies the department for which the
person works.
Description Provides a text description of the
person.
EmployeeNumber Identifies the person's employee
number.
EmployeeType Identifies the person's type of
employment (for example, full time).
FacsimileTelephoneNumber Identifies the person's fax number.
GivenName Identifies the person's given, or first,
name.
HomePhone Identifies the person's home phone
number.
HomePostalAddress Identifies the person's home mailing
address.
Initials Identifies the person's initials.
JpegPhoto Contains an image in jpeg format.
Location Identifies the location in which the
person resides.
LabeledURI Specifies a universal resource locator
that is relevant to the person.
Mail Identifies the person's electronic mailing
address.
Manager Distinguished name representing the
person's manager.
Mobile Identifies the person's mobile phone
number.
Organizational Unit Identifies the organizational unit to
which the person belongs.
Pager Identifies the person's pager number.
PhysicalDeliveryOfficeName Identifies a location where physical
deliveries can be made.
PostalAddress Identifies the person's business mailing
address.
PostalCode Identities the person's business postal
code(such as a United States zip code).
PostOfficeBox Identifies the person's business post
office box.
PreferredDeliveryMethod Identifies the person's preferred method
of contact or delivery.
RoomNumber Identifies the room number in which the
person is located.
Secretary Identifies the person's secretary or
administrator.
SeeAlso URL to information relevant to the
person.
State Identities the state or province in which
the person resides.
StreetAddress Identifies a street address at which the
person is located.
Acess Control Information Identifies access control information for
the person's entry.
TelephoneNumber Identifies the person's telephone
number.
Title Identifies the person's title.
UserID Identifies the person's user ID.
UserPassword Identifies the password with which the
person can bind to the directory.
x500UniqueIdentifier Undefined.
Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the spirit and scope of the present invention. Accordingly, the invention should only be limited by the Claims included below.
|
Same subclass Same class Consider this |
||||||||||
