Annotation of 43BSDReno/contrib/isode-beta/doc/whitepages/user/dir-intro.tex, revision 1.1

1.1     ! root        1: % run this through LaTeX with the appropriate wrapper
        !             2: 
        !             3: \section      {The OSI Directory}
        !             4: The OSI Directory is designed to provide
        !             5: for the management of information objects.
        !             6: The Directory's representation of an information object,
        !             7: typically called an {\em entry},
        !             8: contains information about a person, a place, an organization, etc.
        !             9: Each entry consists of one or more attributes.
        !            10: 
        !            11: Each attribute consists of a type,
        !            12: indicating what kind of attribute it is,
        !            13: and one or more values
        !            14: (one of which is termed the {\em distinguished value\/}).
        !            15: Attribute values are structured using a data definition language
        !            16: called Abstract Syntax Notation One (ASN.1).
        !            17: This structuring is important.
        !            18: With structuring,
        !            19: different programs using the Directory will interpret information in the same
        !            20: way.
        !            21: In addition,
        !            22: the Directory will perform type-checking on the values in order
        !            23: to keep things consistent.
        !            24: 
        !            25: \subsection    {Naming}
        !            26: One of the attributes of an entry is particularly special:
        !            27: it is referred to as the {\em Relative Distinguished Name\/} (RDN) of
        !            28: the entry.
        !            29: The RDN is formed by taking the name of the attribute and its
        !            30: distinguished value.
        !            31: For example,
        !            32: if the attribute in question was called \verb"countryName" and it had
        !            33: a distinguished value of \verb"US", then we might say that the RDN
        !            34: for the entry was \verb"countryName=US".
        !            35: Of course,
        !            36: this is strictly a ``user-friendly'' notation:
        !            37: the Directory uses a concise binary format for representing an RDN.
        !            38: Fortunately,
        !            39: the pilot project software allows simple textual strings to be used in their
        !            40: place and converts back and forth accordingly.
        !            41: 
        !            42: In the OSI Directory,
        !            43: information is primarily organized according to a hierarchical tree
        !            44: structure.
        !            45: The top of the tree is termed the {\em root},
        !            46: and has no explicit name.
        !            47: To find the name of an object,
        !            48: termed its {\em Distinguished Name\/} (DN),
        !            49: one concatenates the RDNs found when traversing the tree by starting
        !            50: at the root and proceeding directly to the object's entry.
        !            51: 
        !            52: For purposes of discussion,
        !            53: we write a Distinguished Name as an ordered series of RDNs separated by
        !            54: an \verb"`@'"-sign with the most significant RDN appearing at the left;
        !            55: e.g.,
        !            56: \begin{quote}\small\begin{verbatim}
        !            57: countryName=US@organizationName=NYSERNet Inc.
        !            58: \end{verbatim}\end{quote}
        !            59: refers to an entry with an RDN of \verb"organizationName=NYSERNet Inc."
        !            60: whose parent has an RDN of \verb"countryName=US".
        !            61: In turn,
        !            62: this parent entry is an immediate child of the root.
        !            63: 
        !            64: To avoid any potential ambiguity when using an interface to the Directory
        !            65: such as \man fred(1c) or \man dish(1c),
        !            66: one prefixes a \verb"`@'"-sign to a string when referring to a fully
        !            67: qualified Distinguished Name;
        !            68: e.g.,
        !            69: \begin{quote}\small\begin{verbatim}
        !            70: @countryName=US@organizationName=NYSERNet Inc.
        !            71: \end{verbatim}\end{quote}
        !            72: always refers to the same entry regardless of context.
        !            73: Note that this is a convention only for interface programs such as these.
        !            74: 
        !            75: As a rule,
        !            76: unless searching,
        !            77: text before the \verb"`='"-sign is not case sensitive,
        !            78: neither is text after the \verb"`='"-sign.
        !            79: 
        !            80: The Directory itself is distributed,
        !            81: being composed of {\em Directory System Agents\/} (DSAs).
        !            82: A group of DSAs under a common administration is responsible for a portion of
        !            83: the tree,
        !            84: termed a {\em Directory Management Domain\/} (DMD).
        !            85: When a user wishes to access the Directory,
        !            86: a {\em Directory User Agent\/} (DUA) is invoked.
        !            87: This DUA contacts a DSA and issues requests.
        !            88: The DSA may (or may not) have the information locally available.
        !            89: If not,
        !            90: a decision has to be made:
        !            91: either the DSA can contact another DSA to get the information
        !            92: (this is called {\em chaining\/}); or,
        !            93: the DSA can tell the DUA to contact another DSA directly
        !            94: (this is called {\em referral\/}).
        !            95: 
        !            96: In short,
        !            97: the DSAs provide mechanisms for traversing the tree and manipulating the
        !            98: information contained therein.
        !            99: 
        !           100: In the context of the pilot project,
        !           101: each participating organization runs its own DMD for that organization.
        !           102: This usually consists of a single DSA containing information on that
        !           103: organization,
        !           104: with some of this information being replicated on additional DSAs.
        !           105: 
        !           106: \section      {Ramifications on the White Pages Service}
        !           107: In order to appreciate the ``feel'' of the white pages service,
        !           108: it is instructive to compare the white pages to an existing facility.
        !           109: 
        !           110: You might be familiar with an older facility called WHOIS.
        !           111: This uses a centralized database to keep track of information on various
        !           112: people, networks, hosts, and so on.
        !           113: This facility has proven useful for many years.
        !           114: Only recently,
        !           115: with the explosive growth of the Internet,
        !           116: has the WHOIS mechanism become unworkable.
        !           117: 
        !           118: \subsection    {Unique Identification of Users}
        !           119: Each entry in the WHOIS database is identified by a unique key,
        !           120: called a {\em handle}.
        !           121: This is (typically) a short string such as \verb"MTR".
        !           122: For a community many orders of magnitude larger than the current entries in
        !           123: the WHOIS database,
        !           124: a handle must contain some structure.
        !           125: This makes it possible to delegate naming authority to different organizations
        !           126: and thus de-centralize management of the white pages service.
        !           127: 
        !           128: In the white pages service,
        !           129: a Directory Distinguished Name is used to uniquely identify a person.
        !           130: Thus,
        !           131: while \verb"MTR" might be enough to identify someone named ``Marshall Rose''
        !           132: in the WHOIS database,
        !           133: the DN
        !           134: \begin{quote}\small\begin{verbatim}
        !           135: c=US
        !           136:     @o=Performance Systems International
        !           137:     @ou=Research and Development
        !           138:     @ou=Mountain View
        !           139:     @cn=Marshall Rose
        !           140: \end{verbatim}\end{quote}
        !           141: serves as the handle for the same person in the white pages service.
        !           142: (That's progress for you!)
        !           143: 
        !           144: Of course,
        !           145: you don't {\em really\/} have to type all that information in.
        !           146: The user interfaces provided with the pilot project allow you to manage very
        !           147: short strings to refer to these DNs.
        !           148: These interfaces also provide a means for incrementally building up a DN from
        !           149: scratch.
        !           150: 
        !           151: Actually,
        !           152: the handle in the example above is probably a somewhat longer than the average.
        !           153: In terms of the pilot project,
        !           154: a handle probably looks closer to:
        !           155: \begin{quote}\small\begin{verbatim}
        !           156: c=US@o=Organization Name@ou=Unit Name@cn=FirstName LastName
        !           157: \end{verbatim}\end{quote}
        !           158: While this is still a far cry from a simple three or four letter acronym,
        !           159: it is the price one pays for using a service designed to meet the needs of a
        !           160: global (or galactic) population.
        !           161: 
        !           162: \subsection    {Searching the White Pages}
        !           163: When the WHOIS database is searched,
        !           164: {\em all\/} entries in the database are examined for a match.
        !           165: Since the current size of the WHOIS database is estimated at roughly 70,000
        !           166: entries,
        !           167: this is an appropriate strategy.
        !           168: 
        !           169: Unfortunately,
        !           170: the potential size of the white pages is many orders of magnitude larger than
        !           171: that of the WHOIS database.
        !           172: As such,
        !           173: the information contained in the white pages is distributed.
        !           174: This makes management of the information a shared responsibility,
        !           175: and has the potential to address organization-specific privacy concerns.
        !           176: 
        !           177: Thus,
        !           178: when the white pages service is invoked,
        !           179: searches are performed relative to a particular {\em area}.
        !           180: This is similar to the White Pages of the telephone system~---~there are
        !           181: several white pages, one for each particular geographical area.
        !           182: As such,
        !           183: before you can find someone's entry in the white pages,
        !           184: you have to already know the area in which they are listed.
        !           185: 
        !           186: The default area is the portion of the Directory corresponding to your own
        !           187: organization.
        !           188: Of course,
        !           189: if you specify a user's handle (a fully-qualified Distinguished Name),
        !           190: this bypasses the default area and goes directly to the portion of
        !           191: the Directory containing the desired entry.
        !           192: 
        !           193: Usually,
        !           194: when you are trying to find an entry,
        !           195: you have only partial information.
        !           196: For example,
        !           197: you might know parts of the name of the organization and the person you're
        !           198: looking for.
        !           199: In this case,
        !           200: it is natural to use an iterative process to find the information you desire.
        !           201: You begin by finding the organization(s) likely to contain the entry,
        !           202: you then initiate a search starting at that area.
        !           203: 
        !           204: Having said that,
        !           205: I'll let you in on a little secret:
        !           206: in addition to people,
        !           207: organizations and organizational units also have entries in the Directory.
        !           208: As such,
        !           209: searching an {\em area\/} is nothing more than starting a search at a
        !           210: particular node at the tree.
        !           211: Thus,
        !           212: you might look for the organization starting at the \verb"@c=US" node.
        !           213: In order to make searching easy,
        !           214: the pilot project requires that all organizations be listed directly under
        !           215: this node.
        !           216: How the subtree is structured beyond that is an organization-specific matter,
        !           217: although the pilot project provides various guidelines.
        !           218: 
        !           219: Thus,
        !           220: to find someone,
        !           221: you look for the organization name in the \verb"@c=US" area.
        !           222: This should give you back a single entry in the Directory,
        !           223: perhaps two or three at the most.
        !           224: You then look for that person in the area corresponding to that entry.
        !           225: To make this easier,
        !           226: the white pages user interface, \pgm{fred}, has a special command syntax
        !           227: which directs it to find out the names of the likely organizations and then
        !           228: search each one for the person you're looking for, automatically!
        !           229: 
        !           230: Of course,
        !           231: if you have the cycles and network bandwidth to burn,
        !           232: in theory there is nothing to stop you from simply going to the top of the
        !           233: tree and searching for the person.
        !           234: However,
        !           235: this is {\em very\/} resource-expensive,
        !           236: particularly in terms of time.
        !           237: Since time is probably the most valuable resource you have,
        !           238: it is worth it to issue two commands which complete quickly,
        !           239: rather than one command which may take hours.
        !           240: 
        !           241: There are  two user interfaces provided with the pilot software.
        !           242: With the ``simple'' one,
        !           243: you follow this two-step process.
        !           244: With the ``complicated'' one,
        !           245: you can form {\em arbitrarily\/} complex queries to the Directory.
        !           246: Thus,
        !           247: if you  want to type just one command and don't mind typing a bit more,
        !           248: you can still have an optimized search.
        !           249: Both of these interfaces will be introduced in due course.
        !           250: 
        !           251: \subsection    {Structure of Information}
        !           252: In addition to a handle,
        !           253: an entry in the WHOIS database consists of a {\em type},
        !           254: which indicates what kind of user is recorded by the entry
        !           255: (e.g., a person);
        !           256: and,
        !           257: several {\em fields}, each containing a textual description.
        !           258: 
        !           259: For example,
        !           260: an entry for a person might look like:
        !           261: \begin{quote}\small\begin{verbatim}
        !           262: Rose, Marshall T. (MTR)    [email protected]
        !           263:     PSI, Inc.
        !           264:     PSI California Office
        !           265:     POB 391776
        !           266:     Mountain View, CA  94039
        !           267:     (415) 961-3380
        !           268: \end{verbatim}\end{quote}
        !           269: The first line contains both the handle and all fields available for searching.
        !           270: Here,
        !           271: the handle is \verb"MTR",
        !           272: and there are two fields available for searching:
        !           273: a name and a mailbox.
        !           274: The remainder of the entry is a textual annotation.
        !           275: 
        !           276: Because the Directory must accommodate many kinds of access from various users
        !           277: and programs.
        !           278: It is important that the information contained therein be highly structured.
        !           279: As noted earlier,
        !           280: this allows universal understanding of the information,
        !           281: and hence consistent interpretation.
        !           282: Fortunately,
        !           283: most of the information is represented by textual strings.
        !           284: 
        !           285: It is important to remember however that all information associated with an
        !           286: entry is contained in an attribute.
        !           287: This attribute has a type,
        !           288: describing both its syntax and semantics.
        !           289: For example,
        !           290: the \verb"surName" attribute of a person has a textual string syntax and
        !           291: semantics corresponding to someone's last name.
        !           292: 
        !           293: How the information associated with an entry is displayed to you
        !           294: is {\em strictly\/} a function of the interface you use when talking to the
        !           295: Directory.
        !           296: The Directory will enforce all of the syntactic constraints associated with
        !           297: the attributes,
        !           298: but only the users of the Directory can assign meaning to the attribute
        !           299: semantics.
        !           300: 
        !           301: With this in mind,
        !           302: here's an entry associated with a person,
        !           303: as it might be displayed by a user interface:
        !           304: \begin{quote}\small\begin{verbatim}
        !           305: Marshall Rose (3)            [email protected]
        !           306:     aka: Marshall T. Rose
        !           307: 
        !           308: Principal Scientist
        !           309: PSI, Inc.
        !           310:     PSI California Office
        !           311:     POB 391776
        !           312:     Mountain View, CA  94039
        !           313: 
        !           314: Telephone:    +1 415-961-3380
        !           315: FAX:          +1 415-961-3282
        !           316: 
        !           317: Mailbox information:
        !           318:     Internet: [email protected]
        !           319:     UUCP:     uupsi!mrose
        !           320: 
        !           321: Principal Implementor of the ISO Development Environment
        !           322: 
        !           323: Name:          Marshall Rose, Mountain View, ...
        !           324: \end{verbatim}\end{quote}
        !           325: Of course,
        !           326: there are dozens of possible ways that this information could have been
        !           327: displayed.
        !           328: Or {\em not\/} displayed~---~for example,
        !           329: there are other attributes which the interface may not care (or be able) to
        !           330: display,
        !           331: such as access control information, passwords, and so on.
        !           332: 
        !           333: Appendix~\ref{person:attributes} on page~\pageref{person:attributes} lists all
        !           334: of the attributes which may be present for a person participating in the pilot
        !           335: project.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.