|
|
1.1 ! root 1: % run this through LaTeX with the appropriate wrapper ! 2: ! 3: \chapter {Introduction} ! 4: This document is {\em The Administrator's Guide\/} for the ! 5: NYSERNet/PSI White Pages Pilot. ! 6: The goal of \theguide/ is to provide a site administrator ! 7: with enough information to be able to participate in the White Pages ! 8: Pilot. ! 9: In practical terms, ! 10: this means that \theguide/ provides information on how ! 11: to install and maintain an OSI Directory at your site. ! 12: ! 13: The OSI Directory is used to provide the white pages service. ! 14: \theguide/ is not intended as a tutorial nor a detailed description ! 15: of the OSI Directory. ! 16: However, as administrative responsibilities and procedures are ! 17: outlined, ! 18: the appropriate Directory concepts will be introduced.% ! 19: \footnote{Actually this paragraph is a lie: ! 20: you can't administer the white pages without knowing what you're ! 21: doing, ! 22: and you don't know what you're doing unless you understand both ! 23: the basics of the OSI Directory and how the pilot project software ! 24: implements the Directory Service. ! 25: As such, ! 26: this entire chapter is really a thinly-veiled primer on these ! 27: two topics.} ! 28: ! 29: Your comments are welcome! ! 30: The OSI Directory is a new, complex technology. ! 31: Although \theguide/ attempts to be straight-forward it probably doesn't ! 32: succeed all the time. ! 33: If you have comments on this document, send them to the Internet ! 34: mailbox ! 35: \begin{quote}\begin{verbatim} ! 36: [email protected] ! 37: \end{verbatim}\end{quote} ! 38: so that \theguide/ can be improved. ! 39: ! 40: \newpage ! 41: ! 42: \section* {Related Documentation} ! 43: The white paper ! 44: {\em An Introduction to a NYSERNet White Pages Pilot Project\/} ! 45: introduces the goals and phases of the pilot project. ! 46: Administrators should familiarize themselves with this document ! 47: before proceeding. ! 48: ! 49: There is also a document which you should provide to the user community at ! 50: your organization. ! 51: It is called ! 52: {\em NYSERNet/PSI White Pages Pilot Project: User's Handbook}, ! 53: or simply \thebook/. ! 54: ! 55: The OSI Directory standard is defined in \cite{ISO.Directory,CCITT.Directory}. ! 56: ! 57: The research note {\em The Design of QUIPU\/} \cite{QUIPU.Design} ! 58: describes the design of the software used for the pilot project, ! 59: whilst {\em Volume Five\/} of the ISODE User's Manual \cite{QUIPU.Manual}, ! 60: henceforth termed \volfive/, ! 61: describes the implementation of the software. ! 62: \theguide/ is intended to replace these later two documents as the ! 63: primary reference for administrators of the pilot project. ! 64: ! 65: PostScript versions of these documents are available via anonymous FTP ! 66: from host \verb"nisc.nyser.net" (\verb"[192.33.4.10]"): ! 67: \begin{quote}\small\begin{verbatim} ! 68: % cd /usr/src/local/ ! 69: % ftp nisc.nyser.net ! 70: Connected to nisc.nyser.net. ! 71: 220 nisc.nyser.net FTP server ready ! 72: Name (nisc.nyser.net:user): anonymous ! 73: Password (nisc.nyser.net:anonymous): guest ! 74: 331 Guest login ok, send ident as password. ! 75: 230 Guest login ok, access restrictions apply. ! 76: ftp> binary ! 77: 200 Type set to I. ! 78: ftp> cd pub/isode ! 79: ftp> get isode-ps.tar.Z ! 80: ftp> get pilot-ps.tar.Z ! 81: ftp> quit ! 82: % uncompress < isode-ps.tar.Z | tar xf - ! 83: % uncompress < pilot-ps.tar.Z | tar xf - ! 84: % rm isode-ps.tar.Z pilot-ps.tar.Z ! 85: \end{verbatim}\end{quote} ! 86: ! 87: \newpage ! 88: \section {Informational Model} ! 89: From a theoretical standpoint, ! 90: the internals of the white pages service can be viewed from ! 91: four different perspectives. ! 92: We begin with the Informational Model which describes the service in terms of ! 93: information objects. ! 94: The Directory's representation of an information object, ! 95: typically called an {\em entry}, ! 96: contains information about a person, a place, an organization, etc. ! 97: Each entry consists of one or more attributes. ! 98: ! 99: Each attribute consists of a type,\index{attribute types} ! 100: indicating what kind of attribute it is, ! 101: and one or more values ! 102: (one of which is termed the {\em distinguished value\/}). ! 103: Attribute values are structured using a data definition language ! 104: called Abstract Syntax Notation One (ASN.1). ! 105: As such, ! 106: different programs using the Directory will interpret information in the same ! 107: way. ! 108: In addition, ! 109: the Directory will perform type-checking on the values in order ! 110: to keep things consistent. ! 111: ! 112: \subsection {Naming} ! 113: One of the attributes of an entry is particularly special: ! 114: it is referred to as the {\em Relative Distinguished Name\/} (RDN) of ! 115: the entry. ! 116: The RDN is formed by taking the name of the attribute and its ! 117: distinguished value. ! 118: For example, ! 119: if the attribute in question was called \verb"countryName" and it had ! 120: a distinguished value of \verb"US", then we might say that the RDN ! 121: for the entry was \verb"countryName=US". ! 122: Of course, ! 123: this is strictly a ``user-friendly'' notation: ! 124: the Directory uses a concise binary format for representing an RDN. ! 125: Fortunately, ! 126: the pilot project software allows simple textual strings to be used in their ! 127: place and converts back and forth accordingly. ! 128: ! 129: In the OSI Directory, ! 130: information is primarily organized according to a hierarchical tree ! 131: structure. ! 132: The top of the tree is termed the {\em root}, ! 133: and has no explicit name. ! 134: To find the name of an object, ! 135: termed its {\em Distinguished Name\/} (DN), ! 136: one concatenates the RDNs found when traversing the tree by starting ! 137: at the root and proceeding directly to the object's entry. ! 138: ! 139: For purposes of discussion, ! 140: we write a Distinguished Name as an ordered series of RDNs separated by ! 141: an \verb"`@'"-sign with the most significant RDN appearing at the left; ! 142: e.g., ! 143: \begin{quote}\small\begin{verbatim} ! 144: countryName=US@organizationName=NYSERNet Inc. ! 145: \end{verbatim}\end{quote} ! 146: refers to an entry with an RDN of \verb"organizationName=NYSERNet Inc." ! 147: whose parent has an RDN of \verb"countryName=US". ! 148: In turn, ! 149: this parent entry is an immediate child of the root. ! 150: ! 151: To avoid any potential ambiguity when using an interface to the Directory ! 152: such as \man fred(1c) or \man dish(1c), ! 153: one prefixes a \verb"`@'"-sign to a string when referring to a fully ! 154: qualified Distinguished Name; ! 155: e.g., ! 156: \begin{quote}\small\begin{verbatim} ! 157: @countryName=US@organizationName=NYSERNet Inc. ! 158: \end{verbatim}\end{quote} ! 159: always refers to the same entry regardless of context. ! 160: Note that this is a convention only for interface programs such as these. ! 161: ! 162: As a rule, ! 163: unless searching, ! 164: text before the \verb"`='"-sign is not case sensitive, ! 165: neither is text after the \verb"`='"-sign. ! 166: ! 167: Of course, names like \verb"countryName", ! 168: while more friendly than binary strings, ! 169: are still rather long, ! 170: so there are several abbreviations that the pilot project software permits. ! 171: Table~\ref{attribute-types} lists the attribute types supported by ! 172: the pilot project, any abbreviations, and the syntax associated with ! 173: each attribute's value. ! 174: Throughout \theguide/, ! 175: the semantics of these attributes will be introduced. ! 176: When using this document later on, ! 177: refer to the Index to quickly find a particular attribute you are interested ! 178: in. ! 179: \tagtable[tp]{INT-1}{Supported Attribute Types}{attribute-types} ! 180: ! 181: The entities which access the Directory on behalf of a user ! 182: are termed {\em Directory User Agents\/} (DUAs). ! 183: The entities which provide the Directory service are termed ! 184: {\em Directory System Agents\/} (DSAs). ! 185: Both kinds of entities are identified by their Distinguished Name. ! 186: That is, ! 187: the DSAs and DUAs are not only network processes, ! 188: they are also objects which have entries in the Directory. ! 189: ! 190: \subsection {How Entries and Objects are Described}\label{edb:format} ! 191: It is now time to explain the notation used to describe entries. ! 192: This notation is termed the ``EDB format'', ! 193: and is named after the disk-resident data structures used by the ! 194: pilot project software. ! 195: ! 196: An entry is textually described in an ASCII formatted file. ! 197: The format of the file is simple: ! 198: \begin{itemize} ! 199: \item Each entry consists of two or more lines followed by a blank line. ! 200: ! 201: \item Each line consists of an attribute type/value pair using ! 202: the familiar ! 203: \begin{quote}\small\begin{verbatim} ! 204: name=value ! 205: \end{verbatim}\end{quote} ! 206: notation, ! 207: such as: ! 208: \begin{quote}\small\begin{verbatim} ! 209: c=US ! 210: \end{verbatim}\end{quote} ! 211: ! 212: \item If multiple values are present for an entry, ! 213: then either multiple lines may be used or the values may ! 214: be separated by the \verb"`&'"-sign. ! 215: The first value occurring is the distinguished value. ! 216: Hence, ! 217: \begin{quote}\small\begin{verbatim} ! 218: co=US ! 219: co=United States of America ! 220: \end{verbatim}\end{quote} ! 221: and ! 222: \begin{quote}\small\begin{verbatim} ! 223: co=US & United States of America ! 224: \end{verbatim}\end{quote} ! 225: are identical: ! 226: both say that the attribute \verb"friendlyCountryName" has two values: ! 227: the distinguished value is \verb"US" and an alternate value is ! 228: \verb"United States of America". ! 229: ! 230: \item Most attributes take textual strings for their value. ! 231: However, for a large number of attributes, ! 232: the actual characters used are limited to a subset of the ! 233: ``printable'' characters: ! 234: \begin{quote}\begin{tabular}{l} ! 235: \verb"A" through \verb"Z"\\ ! 236: \verb"a" through \verb"z"\\ ! 237: \verb"0" through \verb"9"\\ ! 238: \verb"'" (apostrophe)\\ ! 239: \verb"(" (left parenthesis)\\ ! 240: \verb")" (right parenthesis)\\ ! 241: \verb"+" (plus-sign)\\ ! 242: \verb"," (comma)\\ ! 243: \verb"-" (hyphen)\\ ! 244: \verb"." (period)\\ ! 245: \verb"/" (solidus)\\ ! 246: \verb":" (colon)\\ ! 247: \verb"?" (question-mark)\\ ! 248: space ! 249: \end{tabular}\end{quote} ! 250: In particular, note that the characters \verb"`='", \verb"`&'", ! 251: \verb"`$'" and \verb"`#'" are not allowed. ! 252: ! 253: If it makes sense to use a particular character, e.g., \verb"`@'" ! 254: in a mail address, ! 255: then this usage is usually permitted. ! 256: ! 257: If it is necessary to characters from the restricted set, ! 258: proceed the value with \verb"{T.61}", e.g., ! 259: \begin{quote}\small ! 260: \begin{verbatim} ! 261: {T.61}whatever$you$want ! 262: \end{verbatim}\end{quote} ! 263: ! 264: Always use the appropriate case (upper or lower) when entering ! 265: values. ! 266: Although the Directory supports imprecise matching for searching, ! 267: direct lookup is made on the basis of an exact match. ! 268: ! 269: When strings are read by the pilot project software, ! 270: it strips leading and trailing blanks and also compresses multiple ! 271: blanks to a single blank space. ! 272: ! 273: \item Another common kind of attribute value is a Distinguished ! 274: Name, which is specified using the DN notation described earlier. ! 275: Note that a DN is always interpreted in absolute form when it is ! 276: written in an EDB file. ! 277: Hence, the leading \verb"`@'"-sign is never written. ! 278: ! 279: \item Of course, ! 280: there are a few attributes with very special syntaxes, ! 281: when these attributes are introduced, ! 282: the associated notation will be discussed. ! 283: \end{itemize} ! 284: Note that the first line for an entry gives the object's RDN. ! 285: This line should be repeated later on in the entry, ! 286: this causes it to be included in the attributes for the object. ! 287: (The pilot software includes this attribute automatically, ! 288: but it is a good practice regardless.) ! 289: ! 290: An EDB file contains all of the child objects of a node in the tree. ! 291: The first line of the file consists of a single keyword, one of: ! 292: \begin{describe} ! 293: \item[MASTER:] indicating that this EDB file is the original source of the ! 294: information; ! 295: ! 296: \item[SLAVE:] indicating that this EDB file is a copy of the information ! 297: from an authoritative source; ! 298: and, ! 299: ! 300: \item[CACHE:] indicating that this EDB file is a partial, unauthoriative ! 301: copy of the information. ! 302: \end{describe} ! 303: The second line of the file contains the creation date of the information ! 304: in the file. ! 305: This is expressed as a \verb"UniversalTime". ! 306: Put simply, ! 307: the format used is:\label{UniversalTime} ! 308: \begin{quote}\small\begin{verbatim} ! 309: yymmddhhmmssZ ! 310: \end{verbatim}\end{quote} ! 311: as in: ! 312: \begin{quote}\small\begin{verbatim} ! 313: 890509213614Z ! 314: \end{verbatim}\end{quote} ! 315: which is May 9$^{\underline{\mbox{\scriptsize th}}}$, {\oldstyle 1989}, ! 316: 21:36:14 hours at UT. ! 317: ! 318: Hence, ! 319: the format of an EDB file is: ! 320: \begin{quote}\small\begin{verbatim} ! 321: <keyword> ! 322: yymmddhhmmssZ ! 323: <entries> ! 324: \end{verbatim}\end{quote} ! 325: (remember that each entry ends with a blank line). ! 326: Figure~\ref{edb-example} shows an example of a simple EDB file ! 327: containing two entries. ! 328: \tagfigure[tp]{INT-1}{An Example of an EDB file}{edb-example} ! 329: ! 330: \subsection {Object Classes}\index{object classes}\index{attribute types, objectClass} ! 331: One attribute of an entry, ! 332: its \verb"objectClass", ! 333: determines what kind of object this entry corresponds to (e.g., a person). ! 334: The value of this attribute indicates what types of attributes the ! 335: entry {\em must\/} and {\em may\/} contain. ! 336: For example, ! 337: if the value of \verb"objectClass" indicates that the entry corresponds ! 338: to a person, ! 339: then it would make sense for that entry to have a \verb"surName" ! 340: attribute. ! 341: On the other hand, ! 342: if the value of \verb"objectClass" indicates that the entry corresponds ! 343: to an organization, ! 344: then a \verb"surName" attribute would be inappropriate. ! 345: ! 346: The OSI Directory is flexible in that it defines several common ! 347: types of objects, ! 348: and then allows users to define their own objects. ! 349: Further, ! 350: object definition is based on the notion of {\em class inheritance}. ! 351: This means that an object class can be defined as a ``subclass'' of ! 352: a previously defined object class with additional refinements. ! 353: As a subclass, ! 354: the newly defined object ``inherits'' all the semantics of its ! 355: superclass, ! 356: in addition to having additional semantics. ! 357: ! 358: For example, ! 359: the Directory defines an object class called \verb"person". ! 360: This object class defines the attributes which a person in ! 361: the real world might have. ! 362: It may be useful to refine this somewhat to talk about persons ! 363: who have Internet access. ! 364: So, we need a new object class, e.g., \verb"internetPerson". ! 365: This can be defined in a straight-forward fashion: ! 366: \begin{quote} ! 367: The object class \verb"internetPerson" is a subclass of the object class ! 368: \verb"person" which {\em may\/} contain an additional attribute, ! 369: \verb"internetMailbox". ! 370: ! 371: The syntax of an \verb"internetMailbox" is a simple string of printable ! 372: characters which is not case sensitive when performing comparisons. ! 373: \end{quote} ! 374: Thus, ! 375: when entries are defined with an \verb"objectClass" attribute which contains ! 376: the value \verb"internetPerson": ! 377: \begin{itemize} ! 378: \item they {\em must\/} contain whatever attributes an entry with ! 379: \verb"objectClass" \verb"person" {\em must\/} contain; ! 380: ! 381: \item they {\em may\/} contain whatever attributes an entry with ! 382: \verb"objectClass" \verb"person" {\em may\/} contain; ! 383: and, ! 384: ! 385: \item they {\em may\/} contain the \verb"internetMailbox" attribute. ! 386: \end{itemize} ! 387: ! 388: As was seen in Figure~\ref{edb-example} on page~\pageref{edb-example}, ! 389: the \verb"objectClass" attribute is multi-valued. ! 390: For our purposes, ! 391: object class values fall into one of two categories: ! 392: \begin{itemize} ! 393: \item the primary class, ! 394: of which each object has one ! 395: (this is the class that inherited all the properties from the ! 396: superclasses); ! 397: and, ! 398: ! 399: \item one or more superclasses. ! 400: \end{itemize} ! 401: In order to limit the focus of the pilot project, ! 402: only a few primary classes are supported. ! 403: Further, ! 404: of those classes, ! 405: not all optional attributes are supported.% ! 406: \footnote{This limitation is specific to the pilot project; ! 407: the pilot project software can support the entire range of object classes ! 408: and attribute types.} ! 409: Before discussing the primary classes and their class-specific attributes, ! 410: there are a few attributes which are required for every object. ! 411: These are introduced by looking at a few key superclasses. ! 412: ! 413: \subsubsection {The top objectClass}\index{object classes, top} ! 414: The Directory requires that every object have \verb"top" as a super ! 415: class. ! 416: Only one attribute is required for members of this class: ! 417: \begin{describe} ! 418: \item[objectClass:]\index{attribute types, objectClass} ! 419: which defines all the classes that this object belongs ! 420: to. ! 421: \end{describe} ! 422: ! 423: \subsubsection {The quipuObject objectClass}\index{object classes, quipuObject} ! 424: In addition, ! 425: the pilot project software requires that every object also have the object ! 426: class \verb"quipuObject" as a superclass. ! 427: Only one attribute is required for members of this class: ! 428: \begin{describe} ! 429: \item[accessControlList:]\index{attribute types, accessControlList}\index{attribute types, acl (accessControlList)} ! 430: which defines how users of the Directory may ! 431: access the entry. ! 432: \end{describe} ! 433: The \verb"accessControlList" attribute uses a special notation to enter ! 434: its value in the EDB file: ! 435: \begin{quote}\small\begin{verbatim} ! 436: <syntax> ::= <who> "#" <action> "#" <what> ! 437: ! 438: <who> ::= "group" "#" DN ! 439: | "prefix" "#" DN ! 440: | "others" ! 441: | "self" ! 442: ! 443: <action> ::= "none" ! 444: | "detect" ! 445: | "compare" ! 446: | "read" ! 447: | "add" ! 448: | "write" ! 449: ! 450: <what> ::= "child" ! 451: | "entry" ! 452: | "default" ! 453: | "attributes" "#" <attribute-list> ! 454: ! 455: <attribute-list> ::= ! 456: attribute-name ! 457: | attribute-name "$" <attribute-list> ! 458: \end{verbatim}\end{quote} ! 459: The \verb"<who>" part indicates who the rule applies to. ! 460: Recall that when a user connects to the Directory, ! 461: the user {\em binds\/} on behalf of a Distinguished Name. ! 462: This DN is used to determine which rules apply to the user: ! 463: \begin{describe} ! 464: \item[group:] indicates a DN which has an \verb"objectClass" attribute ! 465: of \verb"groupOfNames" or \verb"organizationalRole", ! 466: or it indicates a particular DN, which is the most ! 467: common case. ! 468: ! 469: \item[prefix:] indicates all DNs which start with the indicated ! 470: prefix. Thus, access may be granted to all users ! 471: at or below a particular part of the tree. ! 472: ! 473: \item[self:] indicates the DN which corresponds to this object. ! 474: ! 475: \item[others:] the default case. ! 476: \end{describe} ! 477: The \verb"<what>" part indicates what part of the entry the rule applies ! 478: to: ! 479: \begin{describe} ! 480: \item[child:] the access control rule applies to children immediately below ! 481: the entry. ! 482: ! 483: \item[entry:] the access control rule applies to the entry itself. ! 484: ! 485: \item[attributes:] the access control rule applies to exactly those ! 486: attributes listed. ! 487: Multiple attributes pertaining to the same rule are ! 488: separated by the \verb"`$'"-sign. ! 489: ! 490: \item[default:] the default rule for attributes. ! 491: \end{describe} ! 492: The \verb"<action>" part indicates the actions which are permitted. ! 493: The semantics of this part vary, depending on the \verb"<what>" part. ! 494: However, ! 495: the \verb"<action>" values are ordered from least- to most-significant; ! 496: e.g., having ``read'' permission implies both ``compare'' and ``detect'' ! 497: permission. ! 498: \begin{describe} ! 499: \item[none:] ! 500: \begin{tabular}[t]{rp{3.35in}} ! 501: for entries:& any knowledge of the entry is hidden\\ ! 502: for attributes:& any knowledge of the attribute is hidden\\ ! 503: for children:& downwards progress is blocked ! 504: \end{tabular} ! 505: ! 506: \item[detect:] ! 507: \begin{tabular}[t]{rp{3.35in}} ! 508: for entries:& determination of the entry's existence is permitted\\ ! 509: for attributes:& determination of the attribute's existence is permitted\\ ! 510: for children:& the existence of children is admitted, but downwards progress is still blocked\\ ! 511: \end{tabular} ! 512: ! 513: \item[compare:] ! 514: \begin{tabular}[t]{rp{3.35in}} ! 515: for entries:& the RDN may be compared\\ ! 516: for attributes:& the values of the attribute may be compared\\ ! 517: for children:& exactly specified RDNs may be matched\\ ! 518: \end{tabular} ! 519: ! 520: \item[read:] ! 521: \begin{tabular}[t]{rp{3.35in}} ! 522: for entries:& the RDN may be read\\ ! 523: for attributes:& the attribute values may be read\\ ! 524: for children:& the child information may be listed, and downward searches are permitted\\ ! 525: \end{tabular} ! 526: ! 527: \item[add:] ! 528: \begin{tabular}[t]{rp{3.35in}} ! 529: for entries:& new attributes may be added\\ ! 530: for attributes:& new attribute values may be added\\ ! 531: for children:& new children may be added\\ ! 532: \end{tabular} ! 533: ! 534: \item[write:] ! 535: \begin{tabular}[t]{rp{3.35in}} ! 536: for entries:& the RDN may be changed and existing attributes may be added\\ ! 537: for attributes:& values may be modified or removed\\ ! 538: for children:& children may be removed\\ ! 539: \end{tabular} ! 540: \end{describe} ! 541: The only exception to these rules is the \verb"accessControlList" attribute ! 542: itself: access control rules may be added only to the extent access is ! 543: allowed by the user. ! 544: ! 545: The default access control list is ! 546: \begin{quote}\small\begin{verbatim} ! 547: acl= ! 548: \end{verbatim}\end{quote} ! 549: which simply means ``read'' access for everything and also ! 550: \begin{quote}\small\begin{verbatim} ! 551: self # write # entry ! 552: self # write # default ! 553: \end{verbatim}\end{quote} ! 554: ! 555: There are two optional attributes. ! 556: These are maintained automatically by the Directory: ! 557: \begin{describe} ! 558: \item[lastModifiedBy:]\index{attribute types, lastModifiedBy} ! 559: identifies the Directory entity which last modified ! 560: this entry. ! 561: The value is a Distinguished Name. ! 562: ! 563: \item[lastModifiedTime:]\index{attribute types, lastModifiedTime} ! 564: identifies the time at which this entry was last ! 565: modified. ! 566: The value is a \verb"UniversalTime", ! 567: the syntax of which was described earlier on ! 568: page~\pageref{UniversalTime}. ! 569: \end{describe} ! 570: ! 571: \subsubsection {The quipuNonLeafObject objectClass}\index{object classes, quipuNonLeafObject} ! 572: If an object is permitted children, ! 573: the pilot project software requires that that object also have ! 574: \verb"quipuNonLeafObject" as a superclass. ! 575: ! 576: This class has one mandatory attribute: ! 577: \begin{describe} ! 578: \item[masterDSA:]\index{attribute types, masterDSA} ! 579: identifies the Directory entity which is responsible ! 580: for maintaining the MASTER EDB for the children of ! 581: this entry. ! 582: The value is a Distinguished Name. ! 583: \end{describe} ! 584: There is typically a single MASTER for a particular entry in the tree. ! 585: Hence, this value is usually single-valued. ! 586: When an entry is to be modified, ! 587: the Directory must contact the entity responsible for the MASTER EDB for ! 588: that entry in order to perform the modification. ! 589: ! 590: This class has two optional attributes: ! 591: \begin{describe} ! 592: \item[slaveDSA:]\index{attribute types, slaveDSA} ! 593: identifies any Directory entities which have ! 594: authoritative copies of the EDB for the children ! 595: of this entry. ! 596: The value is one or more Distinguished Names. ! 597: ! 598: \item[treeStructure:]\index{attribute types, treeStructure} ! 599: identifies the object classes which may exist ! 600: immediately below this entry. ! 601: The value is one or more object classes. ! 602: \end{describe} ! 603: Since a fundamental assumption of the Directory is that reads (queries) ! 604: occur much more frequently than writes (updates), ! 605: it is common to have several entities containing authoritative copies of an ! 606: EDB. ! 607: By keeping copies locally, ! 608: queries can be answered with less latency. ! 609: ! 610: \subsubsection {The domainRelatedObject objectClass}\index{object classes, domainRelatedObject} ! 611: If an object has some relationship to the Internet Domain Name System (DNS), ! 612: the pilot project software requires that that object also have ! 613: \verb"domainRelatedObject" as a superclass. ! 614: ! 615: This class has one mandatory attribute: ! 616: \begin{describe} ! 617: \item[associatedDomain:]\index{attribute types, associatedDomain} ! 618: identifies the domain which corresponds to this object. ! 619: The value is a domain string, e.g., ! 620: \begin{quote}\small\begin{verbatim} ! 621: nyser.net ! 622: \end{verbatim}\end{quote} ! 623: \end{describe} ! 624: There is typically a single MASTER for a particular entry in the tree. ! 625: Hence, this value is usually single-valued. ! 626: When an entry is to be modified, ! 627: the Directory must contact the entity responsible for the MASTER EDB for ! 628: that entry in order to perform the modification. ! 629: ! 630: Now we look at the primary object classes. ! 631: Keep in mind that these all have both \verb"top" and \verb"quipuObject" as ! 632: superclasses. ! 633: Further, ! 634: the primary classes which are permitted children all have ! 635: \verb"quipuNonLeafObject" as a superclass. ! 636: ! 637: \subsubsection {The friendlyCountry objectClass}\index{object classes, friendlyCountry} ! 638: Objects of this class represent a sovereign nation. ! 639: For the purposes of the NYSERNet/PSI White Pages Pilot, ! 640: there is only one of these, ! 641: although the pilot project is attached to a world-wide Directory service. ! 642: ! 643: Table~\ref{friendlyCountry-attributes} summarizes the attributes types for ! 644: a \verb"friendlyCountry" object. ! 645: There are two mandatory attributes: ! 646: \begin{describe} ! 647: \item[countryName:]\index{attribute types, countryName}\index{attribute types, c (countryName)} ! 648: which gives the name of the country. ! 649: The value of this attribute is a two-letter ISO~3166 ! 650: code; e.g., ! 651: \begin{quote}\small\begin{verbatim} ! 652: US ! 653: \end{verbatim}\end{quote} ! 654: ! 655: \item[friendlyCountryName:]\index{attribute types, friendlyCountryName}\index{attribute types, co (friendlyCountryName)} ! 656: which gives a user-friendly rendition of the ! 657: country's name (hence the term \verb"friendlyCountry"). ! 658: The value of this attribute is a string; e.g., ! 659: \begin{quote}\small\begin{verbatim} ! 660: United States of America ! 661: \end{verbatim}\end{quote} ! 662: \end{describe} ! 663: \tagtable[tp]{INT-2}{Attribute Types for the friendlyCountry Object Class}% ! 664: {friendlyCountry-attributes} ! 665: ! 666: In addition, ! 667: there is one attribute that may be present: ! 668: \begin{describe} ! 669: \item[description:]\index{attribute types, description} ! 670: which is a simple textual description; ! 671: e.g., ! 672: \begin{quote}\small\begin{verbatim} ! 673: the land of the free and the home of the brave ! 674: \end{verbatim}\end{quote} ! 675: \end{describe} ! 676: ! 677: Putting everything together, ! 678: one could describe an entry for an object of class \verb"friendlyCountry" ! 679: thusly: ! 680: \begin{quote}\small\begin{verbatim} ! 681: c=US ! 682: masterDSA= cn=Alpaca# ! 683: slaveDSA= cn=Fruit Bat# ! 684: slaveDSA= cn=Giant Tortoise# ! 685: acl= others # read # entry ! 686: acl= group # c=US@cn=Manager # write # entry ! 687: acl= others # read # default ! 688: acl= group # c=US@cn=Manager # write # default ! 689: treeStructure= quipuNonLeafObject & organization & locality ! 690: treeStructure= quipuDSA & alias & organizationalRole ! 691: c= US ! 692: co= USA & US & United States of America ! 693: objectClass= top & quipuObject & quipuNonLeafObject ! 694: objectClass= country & friendlyCountry ! 695: \end{verbatim}\end{quote} ! 696: These lines indicate that: ! 697: \begin{itemize} ! 698: \item The RDN for this object is \verb"c=US" ! 699: (read ``country name is US''). ! 700: ! 701: \item The user-friendly name for this country takes on one of three values ! 702: \begin{quote}\small\begin{verbatim} ! 703: USA ! 704: US ! 705: United States of America ! 706: \end{verbatim}\end{quote} ! 707: ! 708: \item There are two DSAs which have SLAVE copies of the EDB for this ! 709: object, one is called \verb"cn=Giant Tortoise" and the other ! 710: is called \verb"cn=Fruit Bat". ! 711: (We'll discuss how these colorful names are chosen later on.) ! 712: ! 713: \item The DSA responsible for maintaining the MASTER copy of the EDB ! 714: is called \verb"cn=Alpaca". ! 715: Note that all three of these DSAs live directly under the ROOT of ! 716: the Directory tree. ! 717: ! 718: \item Everyone is allowed to read the entry and all of its attributes, ! 719: and only \verb"c=US@cn=Manager" is allowed to change anything. ! 720: ! 721: \item The \verb"treeStructure" attribute says that the children immediately ! 722: below this object: ! 723: \begin{itemize} ! 724: \item may have children themselves (\verb"quipuNonLeafObject"), ! 725: in which case, the objects under \verb"c=US" are either ! 726: \verb"organization" or \verb"locality" objects; or, ! 727: ! 728: \item needn't have children, being a DSA ! 729: (of object class \verb"quipuDSA") ! 730: or an \verb"organizationalRole"; ! 731: or, ! 732: ! 733: \item may be an \verb"alias". ! 734: \end{itemize} ! 735: ! 736: \item The official name of this country is \verb"US". ! 737: ! 738: \item This object belongs to five object classes: ! 739: \begin{itemize} ! 740: \item \verb"top" and \verb"quipuObject" because membership is ! 741: mandatory; ! 742: ! 743: \item \verb"quipuNonLeafObject" so that children may reside ! 744: under the entry; ! 745: ! 746: \item \verb"friendlyCountry" which is the primary object class; and, ! 747: ! 748: \item \verb"country" which is a superclass of \verb"friendlyCountry". ! 749: \end{itemize} ! 750: \end{itemize} ! 751: ! 752: \subsubsection {The organization objectClass}\index{object classes, organization} ! 753: Objects of this class represent a top-level organizational entity, ! 754: such as a corporation, university, government entity, and so on. ! 755: There is an \verb"organization" object for each organization participating in ! 756: the NYSERNet/PSI White Pages Pilot. ! 757: ! 758: Table~\ref{organization-attributes} summarizes the attributes types for ! 759: an \verb"organization" object. ! 760: There is one mandatory attribute: ! 761: \begin{describe} ! 762: \item[organizationName:]\index{attribute types, organizationName}\index{attribute types, o (organizationName)} ! 763: which gives the name of the organization. ! 764: The value of this attribute is a string; e.g., ! 765: \begin{quote}\small\begin{verbatim} ! 766: NYSERNet Inc. ! 767: \end{verbatim}\end{quote} ! 768: \end{describe} ! 769: \tagtable[tp]{INT-3}{Attribute Types for the organization Object Class}% ! 770: {organization-attributes} ! 771: ! 772: There are several attributes that may be present, ! 773: which are divided into three groups: ! 774: physical address, telecommunications address, and miscellaneous information. ! 775: ! 776: The first group describes the physical address of the object: ! 777: \begin{describe} ! 778: \item[postalAddress:]\index{attribute types, postalAddress} ! 779: which describes how physical mail is addressed to the ! 780: object. ! 781: The syntax of this attribute's value is special: ! 782: it consists of~1 to~6 fields, seperated by the ! 783: ``\verb"$"''-sign, each field being from~1 to~30 ! 784: characters long; e.g. ! 785: \begin{quote}\small\begin{verbatim} ! 786: NYSERNet Inc. $ 165 Jordan Road $ Troy, NY 12180 ! 787: \end{verbatim}\end{quote} ! 788: ! 789: \item[registeredAddress:]\index{attribute types, registeredAddress} ! 790: which defines how registered physical mail is ! 791: addressed to the object. ! 792: The syntax is identical to that of the ! 793: \verb"postalAddress" attribute. ! 794: ! 795: \item[streetAddress:]\index{attribute types, streetAddress} ! 796: which is a string describing where the object ! 797: physically resides ! 798: (i.e., the street name, place, avenue, and building ! 799: number); e.g., ! 800: object ! 801: \begin{quote}\small\begin{verbatim} ! 802: 165 Jordan Road ! 803: \end{verbatim}\end{quote} ! 804: This need have no relationship to the object's ! 805: postal address. ! 806: ! 807: \item[postOfficeBox:]\index{attribute types, postOfficeBox} ! 808: which is a string describing the box at which the ! 809: object will receive physical postal delivery; e.g., ! 810: \begin{quote}\small\begin{verbatim} ! 811: 1010 ! 812: \end{verbatim}\end{quote} ! 813: ! 814: \item[physicalDeliveryOfficeName:]\index{attribute types, physicalDeliveryOfficeName} ! 815: which is a string describing the geographical location ! 816: of the physical delivery office which services the ! 817: postal address of this object; e.g., ! 818: \begin{quote}\small\begin{verbatim} ! 819: Troy ! 820: \end{verbatim}\end{quote} ! 821: ! 822: \item[stateOrProvinceName:]\index{attribute types, stateOrProvinceName} ! 823: which is a string describing the state in which ! 824: the \verb"locality" is found; e.g., ! 825: \begin{quote}\small\begin{verbatim} ! 826: New York ! 827: \end{verbatim}\end{quote} ! 828: ! 829: \item[postalCode:]\index{attribute types, postalCode} ! 830: which is a string containing the ZIP code; e.g., ! 831: \begin{quote}\small\begin{verbatim} ! 832: 12180 ! 833: \end{verbatim}\end{quote} ! 834: or ! 835: \begin{quote}\small\begin{verbatim} ! 836: 94043-2112 ! 837: \end{verbatim}\end{quote} ! 838: ! 839: \item[localityName:]\index{attribute types, localityName}\index{attribute types, l (localityName)} ! 840: which is a string describing the geographical ! 841: area containing the \verb"streetAddress"; e.g., ! 842: \begin{quote}\small\begin{verbatim} ! 843: Troy, New York ! 844: \end{verbatim}\end{quote} ! 845: \end{describe} ! 846: The second optional group describes telecommunications addressing information ! 847: for the object. ! 848: \begin{describe} ! 849: \item[telephoneNumber:]\index{attribute types, telephoneNumber} ! 850: which is a string describing the phone number of the object ! 851: using the international notation; e.g., ! 852: \begin{quote}\small\begin{verbatim} ! 853: +1 518-283-8860 ! 854: \end{verbatim}\end{quote} ! 855: or ! 856: \begin{quote}\small\begin{verbatim} ! 857: +1 518-283-8860 x1234 ! 858: \end{verbatim}\end{quote} ! 859: In general, the syntax is: ! 860: \begin{quote}\smaller\begin{verbatim} ! 861: +<<country code>> <<national number>> [x<<extension>>] ! 862: \end{verbatim}\end{quote} ! 863: ! 864: \item[facsimileTelephoneNumber:]\index{attribute types, facsimileTelephoneNumber} ! 865: which is a string describing the fax number of the object ! 866: using the international notation; e.g., ! 867: \begin{quote}\small\begin{verbatim} ! 868: +1 518-283-8904 ! 869: \end{verbatim}\end{quote} ! 870: ! 871: \item[telexNumber:]\index{attribute types, telexNumber} ! 872: which is defines the TELEX address of the object in a ! 873: three-field format: ! 874: \begin{quote}\small\begin{verbatim} ! 875: number $ country $ answerback ! 876: \end{verbatim}\end{quote} ! 877: e.g., ! 878: \begin{quote}\small\begin{verbatim} ! 879: 650 103 7390 $ US $ MCI UW ! 880: \end{verbatim}\end{quote} ! 881: \end{describe} ! 882: The final optional group contains one miscellaneous attribute: ! 883: \begin{describe} ! 884: \item[description:]\index{attribute types, description} ! 885: which is a simple textual description; ! 886: e.g., ! 887: \begin{quote}\small\begin{verbatim} ! 888: Not-for-profit organization providing network services ! 889: \end{verbatim}\end{quote} ! 890: \end{describe} ! 891: Figure~\ref{organization-edb} shows an entry for an \verb"organization" object. ! 892: \tagfigure[tp]{INT-2}{An Example of an Entry for the organization Object Class}% ! 893: {organization-edb} ! 894: ! 895: \subsubsection {The organizationalUnit objectClass}\index{object classes, organizationalUnit} ! 896: Objects of this class represent a unit within an organization, ! 897: such as a division or department. ! 898: Each organization participating in the NYSERNet/PSI White Pages Pilot decides ! 899: how many organizational units it wishes to maintain as subordinates to ! 900: its organization entry. ! 901: ! 902: Table~\ref{organizationalUnit-attributes} summarizes the attributes types for ! 903: an \verb"organizationalUnit" object. ! 904: There is one mandatory attribute: ! 905: \begin{describe} ! 906: \item[organizationalUnitName:]\index{attribute types, organizationUnitName}\index{attribute types, ou (organizationUnitName)} ! 907: which gives the name of the organizational unit. ! 908: The value of this attribute is a string; e.g., ! 909: \begin{quote}\small\begin{verbatim} ! 910: Research and Development ! 911: \end{verbatim}\end{quote} ! 912: \end{describe} ! 913: \tagtable[tp]{INT-4}{Attribute Types for the organizationalUnit Object Class}% ! 914: {organizationalUnit-attributes} ! 915: ! 916: There are several attributes that may be present. ! 917: They belong to the physical address, telecommunications address, ! 918: and miscellaneous information groups described earlier. ! 919: ! 920: Figure~\ref{organizationalUnit-edb} shows an entry for an ! 921: \verb"organizationalUnit" object. ! 922: \tagfigure[tp]{INT-3}% ! 923: {An Example of an Entry for the organizationalUnit Object Class}% ! 924: {organizationalUnit-edb} ! 925: ! 926: \subsubsection {The locality objectClass}\index{object classes, locality} ! 927: Objects of this class represent a geographical area, ! 928: such as a state, county, or city. ! 929: The sponsors of the NYSERNet/PSI White Pages Pilot maintain such an entry for ! 930: the State of New York. ! 931: This is used to contain objects corresponding to individuals who are ! 932: associated with organizations that are not participating in the pilot ! 933: project. ! 934: ! 935: Table~\ref{locality-attributes} summarizes the attributes types for ! 936: a \verb"locality" object. ! 937: There is one mandatory attribute: ! 938: \begin{describe} ! 939: \item[localityName:]\index{attribute types, localityName}\index{attribute types, l (localityName)} ! 940: which gives the name of the locality. ! 941: The value of this attribute is a string; e.g., ! 942: \begin{quote}\small\begin{verbatim} ! 943: NY ! 944: \end{verbatim}\end{quote} ! 945: or ! 946: \begin{quote}\small\begin{verbatim} ! 947: Rensselaer County ! 948: \end{verbatim}\end{quote} ! 949: \end{describe} ! 950: \tagtable[tp]{INT-5}{Attribute Types for the locality Object Class}% ! 951: {locality-attributes} ! 952: ! 953: There is only one attribute that may be present, ! 954: it belongs to the miscellaneous information group described earlier. ! 955: ! 956: Figure~\ref{sony-edb} shows the entry for the State of New York, ! 957: whilst Figure~\ref{locality-edb} shows an entry for a subordinate ! 958: \verb"locality" object. ! 959: \tagfigure[tp]{INT-4}{The Entry for The State of New York}{sony-edb} ! 960: \tagfigure[tp]{INT-5}{An Example of an Entry for the locality Object Class}% ! 961: {locality-edb} ! 962: ! 963: \subsubsection {The pilotPerson objectClass}\index{object classes, pilotPerson} ! 964: Objects of this class represent a person participating in the pilot project. ! 965: ! 966: Table~\ref{pilotPerson-attributes} summarizes the attributes types for ! 967: a \verb"pilotPerson" object. ! 968: There are two mandatory attributes: ! 969: \begin{describe} ! 970: \item[commonName:]\index{attribute types, commonName}\index{attribute types, cn (commonName)} ! 971: which gives a (potentially ambiguous) name for ! 972: the person. ! 973: The value of this attribute is a string usually ! 974: containing the person's first and last names; e.g., ! 975: \begin{quote}\small\begin{verbatim} ! 976: Marshall Rose ! 977: \end{verbatim}\end{quote} ! 978: This attribute is usually multi-valued, containing ! 979: variations on the first, middle, and last names; e.g., ! 980: \begin{quote}\small\begin{verbatim} ! 981: Colin Robbins ! 982: Colin John Robbins ! 983: Colin J. Robbins ! 984: \end{verbatim}\end{quote} ! 985: For purposes of the pilot project, the distinguished ! 986: value of the attribute usually contains only the ! 987: person's first and last names. ! 988: (See Section~\ref{naming:people} on ! 989: page~\pageref{naming:people} for a discussion of this.) ! 990: ! 991: \item[surName:]\index{attribute types, surName} ! 992: which gives the person's last name. ! 993: The value of this attribute is a string; e.g., ! 994: \begin{quote}\small\begin{verbatim} ! 995: Rose ! 996: \end{verbatim}\end{quote} ! 997: \end{describe} ! 998: \tagtable[tp]{INT-6}{Attribute Types for the pilotPerson Object Class}% ! 999: {pilotPerson-attributes} ! 1000: ! 1001: There are several attributes that may be present, ! 1002: which are divided into five groups: ! 1003: physical address, telecommunication information, ! 1004: computer environment, ! 1005: miscellaneous information, ! 1006: and home information. ! 1007: The first two groups have been previously described. ! 1008: ! 1009: The third group describes information relating to the person's ! 1010: computer environment: ! 1011: \begin{describe} ! 1012: \item[rfc822Mailbox:]\index{attribute types, rfc822Mailbox} ! 1013: which is the user's computer mail address, ! 1014: e.g., ! 1015: \begin{quote}\small\begin{verbatim} ! 1016: [email protected] ! 1017: \end{verbatim}\end{quote} ! 1018: ! 1019: \item[otherMailbox:]\index{attribute types, otherMailbox} ! 1020: which is the user's computer mail address ! 1021: in various domains. ! 1022: The syntax of this attribute's value is special: ! 1023: \begin{quote}\small\begin{verbatim} ! 1024: <domain> $ <mailbox> ! 1025: \end{verbatim}\end{quote} ! 1026: e.g., ! 1027: \begin{quote}\small\begin{verbatim} ! 1028: internet $ [email protected] ! 1029: \end{verbatim}\end{quote} ! 1030: The current list of mail domains are: ! 1031: \[\begin{tabular}{l} ! 1032: applelink\\ ! 1033: bitnet\\ ! 1034: compuserve\\ ! 1035: genie\\ ! 1036: internet\\ ! 1037: mcimail\\ ! 1038: nasamail\\ ! 1039: preferred\\ ! 1040: uucp ! 1041: \end{tabular}\] ! 1042: ! 1043: \item[userid:]\index{attribute types, userid} ! 1044: which is the user's login name; e.g., ! 1045: \begin{quote}\small\begin{verbatim} ! 1046: mrose ! 1047: \end{verbatim}\end{quote} ! 1048: ! 1049: \item[userClass:]\index{attribute types, userClass} ! 1050: which describe's the user's classification; e.g., ! 1051: \begin{quote}\small\begin{verbatim} ! 1052: staff ! 1053: \end{verbatim}\end{quote} ! 1054: \end{describe} ! 1055: The next optional group contains a few miscellaneous attributes: ! 1056: \begin{describe} ! 1057: \item[description:]\index{attribute types, description} ! 1058: which is a simple textual description; ! 1059: e.g., ! 1060: \begin{quote}\small\begin{verbatim} ! 1061: Principal Implementor of the ISO Development Environment ! 1062: \end{verbatim}\end{quote} ! 1063: ! 1064: \item[info:]\index{attribute types, info} ! 1065: which is additional information about the object; ! 1066: e.g., ! 1067: \begin{quote}\small\begin{verbatim} ! 1068: It's nearly as good as BIND ! 1069: \end{verbatim}\end{quote} ! 1070: ! 1071: \item[businessCategory:]\index{attribute types, businessCategory} ! 1072: which describes the person's business, ! 1073: e.g., ! 1074: \begin{quote}\small\begin{verbatim} ! 1075: networking ! 1076: \end{verbatim}\end{quote} ! 1077: ! 1078: \item[title:]\index{attribute types, title} ! 1079: which is the person's job title, ! 1080: e.g., ! 1081: \begin{quote}\small\begin{verbatim} ! 1082: Senior Scientist ! 1083: \end{verbatim}\end{quote} ! 1084: ! 1085: \item[roomNumber:]\index{attribute types, roomNumber} ! 1086: which is a string describing where the object resides ! 1087: at the location, e.g., ! 1088: \begin{quote}\small\begin{verbatim} ! 1089: Building T-30 ! 1090: \end{verbatim}\end{quote} ! 1091: ! 1092: \item[userPassword:]\index{attribute types, userPassword} ! 1093: which is a string containing the object's ! 1094: password in the Directory. This is used, ! 1095: for example, when the user wants to update ! 1096: the entry. ! 1097: The password is kept in the clear ! 1098: (the security ramifications of this are ! 1099: discussed later on); e.g., ! 1100: \begin{quote}\small\begin{verbatim} ! 1101: secret ! 1102: \end{verbatim}\end{quote} ! 1103: ! 1104: \item[mobileTelephoneNumber:]\index{attribute types, mobileTelephoneNumber}\index{attribute types, mobile (mobileTelephoneNumber)} ! 1105: which is a string describing the user's mobile ! 1106: number (e.g., for a cellular phone). ! 1107: ! 1108: \item[pagerTelephoneNumber:]\index{attribute types, pagerTelephoneNumber}\index{attribute types, pager (pagerTelephoneNumber)} ! 1109: which is a string describing the user's pager number. ! 1110: ! 1111: \item[favouriteDrink:]\index{attribute types, favouriteDrink}\index{attribute types, drink (favouriteDrink)} ! 1112: which is a string describing the user's favorite drink. ! 1113: ! 1114: \item[secretary:]\index{attribute types, secretary} ! 1115: which is the Distinguished Name of the user's ! 1116: secretary. ! 1117: ! 1118: \item[seeAlso:]\index{attribute types, seeAlso} ! 1119: which is a Distinguished Name pointing to another ! 1120: entry related to the user (perhaps in a different ! 1121: role). ! 1122: ! 1123: \item[photo:]\index{attribute types, photo} ! 1124: which is a facsimile bitmap of the user's face. ! 1125: \end{describe} ! 1126: The final optional group contains a few attributes about the person at home: ! 1127: \begin{describe} ! 1128: \item[homePostalAddress:]\index{attribute types, homePostalAddress} ! 1129: which describes how physical mail is addressed to the ! 1130: person's home. ! 1131: The syntax of this attribute's value is special: ! 1132: it consists of~1 to~6 fields, seperated by the ! 1133: ``\verb"$"''-sign, each field being from~1 to~30 ! 1134: characters long; e.g. ! 1135: \begin{quote}\small\begin{verbatim} ! 1136: NYSERNet Inc. $ 165 Jordan Road $ Troy, NY 12180 ! 1137: \end{verbatim}\end{quote} ! 1138: ! 1139: \item[homePhone:]\index{attribute types, homePhone} ! 1140: which is a string describing the phone number of the object ! 1141: using the international notation; e.g., ! 1142: \begin{quote}\small\begin{verbatim} ! 1143: +1 518-283-8860 ! 1144: \end{verbatim}\end{quote} ! 1145: \end{describe} ! 1146: Figure~\ref{pilotPerson-edb} shows an entry for a \verb"pilotPerson" object. ! 1147: \tagfigure[tp]{INT-6}{An Example of an Entry for the pilotPerson Object Class}% ! 1148: {pilotPerson-edb} ! 1149: ! 1150: \subsubsection {The alias objectClass}\index{object classes, alias} ! 1151: Objects of this class represent an alias to some other entry in the ! 1152: NYSERNet/PSI White Pages Pilot. ! 1153: Each organization participating in the pilot must define at least two of ! 1154: these: ! 1155: \begin{itemize} ! 1156: \item a manager responsible for the organization's portion of the Directory ! 1157: tree; ! 1158: and, ! 1159: ! 1160: \item a postmaster responsible for the organization's electronic mail. ! 1161: \end{itemize} ! 1162: ! 1163: Table~\ref{alias-attributes} summarizes the attributes types for ! 1164: an \verb"alias". ! 1165: There are two mandatory attributes: ! 1166: \begin{describe} ! 1167: \item[commonName:]\index{attribute types, commonName}\index{attribute types, cn (commonName)} ! 1168: which gives the name of the alias. ! 1169: The value of this attribute is a string; e.g., ! 1170: \begin{quote}\small\begin{verbatim} ! 1171: PostMaster ! 1172: \end{verbatim}\end{quote} ! 1173: ! 1174: \item[aliasedObjectName:]\index{attribute types, aliasedObjectName} ! 1175: which is a pointer to another object in the Directory; ! 1176: e.g., ! 1177: \begin{quote}\small\begin{verbatim} ! 1178: c=US@o=NYSERNet Inc.@ou=Operations@cn=Chris Kolb ! 1179: \end{verbatim}\end{quote} ! 1180: \[\fbox{\begin{tabular}{lp{0.4\textwidth}} ! 1181: \bf NOTE:& The value of this attribute must not be another alias: ! 1182: each alias must point to a non-aliased entry! ! 1183: \end{tabular}}\] ! 1184: \end{describe} ! 1185: There are no optional attributes for this object class. ! 1186: Figure~\ref{alias-edb} shows an entry for an \verb"alias" object. ! 1187: \tagtable[tp]{INT-7}{Attribute Types for the alias Object Class}% ! 1188: {alias-attributes} ! 1189: \tagfigure[tp]{INT-7}{An Example of an Entry for the alias Object Class}% ! 1190: {alias-edb} ! 1191: ! 1192: \subsubsection {The organizationalRole objectClass}\index{object classes, organizationalRole} ! 1193: Objects of this class represent a position filled by a person. ! 1194: ! 1195: Table~\ref{organizationalRole-attributes} summarizes the attributes types for ! 1196: a \verb"organizationalRole". ! 1197: There is one mandatory attribute: ! 1198: \begin{describe} ! 1199: \item[commonName:]\index{attribute types, commonName}\index{attribute types, cn (commonName)} ! 1200: which gives the name of the role. ! 1201: The value of this attribute is a string; e.g., ! 1202: \begin{quote}\small\begin{verbatim} ! 1203: Manager ! 1204: \end{verbatim}\end{quote} ! 1205: \end{describe} ! 1206: There are several attributes that may be present, ! 1207: which are divided into three groups: ! 1208: physical address, telecommunication information, ! 1209: and miscellaneous information. ! 1210: The first two groups have been previously described. ! 1211: The final optional group contains two miscellaneous attributes: ! 1212: \begin{describe} ! 1213: \item[description:]\index{attribute types, description} ! 1214: which is a simple textual description; ! 1215: e.g., ! 1216: \begin{quote}\small\begin{verbatim} ! 1217: Manager of the Troy Office ! 1218: \end{verbatim}\end{quote} ! 1219: ! 1220: \item[roleOccupant:]\index{attribute types, roleOccupant} ! 1221: which is a pointer to another object in the Directory, ! 1222: referring to the person who currently fills the role. ! 1223: e.g., ! 1224: \begin{quote}\small\begin{verbatim} ! 1225: c=US@o=NYSERNet Inc.@ou=Administration@cn=Kimberly Brown ! 1226: \end{verbatim}\end{quote} ! 1227: \end{describe} ! 1228: Figure~\ref{organizationalRole-edb} shows an entry for a \verb"organizationalRole" ! 1229: object. ! 1230: \tagtable[tp]{INT-9}{Attribute Types for the organizationalRole Object Class}% ! 1231: {organizationalRole-attributes} ! 1232: \tagfigure[tp]{INT-14}% ! 1233: {An Example of an Entry for the organizationalRole Object Class}% ! 1234: {organizationalRole-edb} ! 1235: ! 1236: \subsubsection {The quipuDSA objectClass}\index{object classes, quipuDSA} ! 1237: Objects of this class represent a Directory System Agent (DSA) running ! 1238: the pilot project software. ! 1239: Each organization participating in the NYSERNet/PSI White Pages Pilot typically ! 1240: runs at least one DSA. ! 1241: ! 1242: Table~\ref{quipuDSA-attributes} summarizes the attributes types for ! 1243: a \verb"quipuDSA". ! 1244: There are several mandatory attributes: ! 1245: \begin{describe} ! 1246: \item[commonName:]\index{attribute types, commonName}\index{attribute types, cn (commonName)} ! 1247: which gives the name of the DSA, ! 1248: by convention this is the name of an endangered species ! 1249: in South America; e.g., ! 1250: \begin{quote}\small\begin{verbatim} ! 1251: Fruit Bat ! 1252: \end{verbatim}\end{quote} ! 1253: ! 1254: \item[eDBinfo:]\index{attribute types, eDBinfo} ! 1255: which indicates how the DSA participates when ! 1256: propagating authoritative EDB information ! 1257: (this is the dual ! 1258: of the \verb"masterDSA" and \verb"slaveDSA" ! 1259: attribute types discussed earlier). ! 1260: The syntax of this attribute's value is special: ! 1261: \begin{quote}\small\begin{verbatim} ! 1262: <name> # <upstream> # <downstream> ! 1263: \end{verbatim}\end{quote} ! 1264: The \verb"<name>" field is a Distinguished Name referring to the object ! 1265: containing the EDB. ! 1266: By convention, if absent this refers to the ROOT (unnamed) EDB. ! 1267: The \verb"<upstream>" field is the Distinguished Name of a DSA which is ! 1268: considered to be ``closer'' to the MASTER of this EDB. ! 1269: It may be the name of the actual DSA containing the MASTER EDB, ! 1270: but it might also be the name of an intermediate DSA (containing a SLAVE copy). ! 1271: If this field is empty, ! 1272: then this DSA does not pull the EDB from another DSA ! 1273: (this needn't mean that it holds the MASTER EDB, ! 1274: though usually this is the case). ! 1275: The \verb"<downstream>" field is the Distinguished Name of a DSA which is ! 1276: allowed to copy the EDB from this DSA. ! 1277: If this field is empty, ! 1278: then this DSA does not allow other DSAs to copy the EDB. ! 1279: If the \verb"<downstream>" field is to contain more than one DSA, ! 1280: either enter multiple \verb"eDBinfo" lines or separate the Distinguished ! 1281: Names of the downstream DSAs with the \verb"`$'"-sign. ! 1282: ! 1283: A few examples: ! 1284: \begin{quote}\small\begin{verbatim} ! 1285: # cn=Giant Tortoise # cn=Fruit Bat ! 1286: c=US # # cn=Fruit Bat ! 1287: c=US # # c=US@cn=Spectacled Bear ! 1288: c=US@l=NY # cn=Fruit Bat # ! 1289: \end{verbatim}\end{quote} ! 1290: Note that there is no harm to using multiple \verb"eDBinfo" lines, ! 1291: even if they refer to the same EDB. ! 1292: These lines indicate that: ! 1293: \begin{itemize} ! 1294: \item The ROOT EDB is read from the \verb"cn=Giant Tortoise" DSA, ! 1295: further the \verb"cn=Fruit Bat" DSA is allowed to read the ! 1296: ROOT EDB from this DSA. ! 1297: ! 1298: \item The \verb"cn=Fruit Bat" DSA and the \verb"c=US@cn=Spectacled Bear" DSA ! 1299: are allowed to read the EDB for \verb"c=US". ! 1300: Note that the second and third line could be combined as: ! 1301: \begin{quote}\small\begin{verbatim} ! 1302: c=US # # cn=Fruit Bat$c=US@cn=Spectacled Bear ! 1303: \end{verbatim}\end{quote} ! 1304: While more concise, ! 1305: this format is not recommended as it is probably more difficult to read. ! 1306: ! 1307: \item The DSA named \verb"cn=Fruit Bat" supplies the EDB for \verb"c=US@l=NY" ! 1308: to this DSA. ! 1309: \end{itemize} ! 1310: ! 1311: \item[presentationAddress:]\index{attribute types, presentationAddress} ! 1312: which is the OSI presentation address that the DSA ! 1313: resides at. ! 1314: The syntax of this attribute's value is special: ! 1315: \begin{quote}\small\begin{verbatim} ! 1316: '0101'H/Internet=<quad>+<port> ! 1317: \end{verbatim}\end{quote} ! 1318: or ! 1319: \begin{quote}\small\begin{verbatim} ! 1320: '0101'H/Internet=<quad-1>+<port>|Internet=<quad-2>+<port> ! 1321: \end{verbatim}\end{quote} ! 1322: if the DSA is capable of listing on multiple IP addresses.% ! 1323: \footnote{Actually, the rules for forming OSI presentation addresses are ! 1324: {\em much\/} more complicated; ! 1325: however, for the purposes of the pilot project, ! 1326: this should suffice.} ! 1327: The \verb"<quad>" field is a 32-bit IP address expressed in the ! 1328: usual quad notation (e.g., \verb"130.117.128.2"). ! 1329: The \verb"<port>" field is a decimal TCP port which isn't likely to ! 1330: be used on your system. ! 1331: The value \verb"17003" is recommended for the purposes of the pilot project. ! 1332: ! 1333: A simple example: ! 1334: \begin{quote}\small\begin{verbatim} ! 1335: '0101'H/Internet=130.117.128.2+17003 ! 1336: \end{verbatim}\end{quote} ! 1337: Note that multiple values for the \verb"presentationAddress" attribute type ! 1338: should not be used: ! 1339: multiple IP addresses (up to~4) can be specified using a single attribute value. ! 1340: ! 1341: \item[manager:]\index{attribute types, manager} ! 1342: which is a pointer to another object in the Directory ! 1343: of the person who manages this DSA; ! 1344: e.g., ! 1345: \begin{quote}\small\begin{verbatim} ! 1346: c=US@o=NYSERNet Inc.@cn=Manager ! 1347: \end{verbatim}\end{quote} ! 1348: ! 1349: \item[userPassword:]\index{attribute types, userPassword} ! 1350: which is a string containing the DSA's ! 1351: password in the Directory. This is used ! 1352: when the manager of the DSA wants to ! 1353: change the entry for the DSA itself ! 1354: (as opposed to the entries held by the DSA). ! 1355: The password is kept in the clear ! 1356: (the security ramifications of this are ! 1357: discussed later on); e.g., ! 1358: \begin{quote}\small\begin{verbatim} ! 1359: secret ! 1360: \end{verbatim}\end{quote} ! 1361: ! 1362: \item[quipuVersion:]\index{attribute types, quipuVersion} ! 1363: which is a simple string relating the version of ! 1364: the pilot project software being run by this DSA; ! 1365: e.g., ! 1366: \begin{quote}\small\begin{verbatim} ! 1367: Version 5.0 ! 1368: \end{verbatim}\end{quote} ! 1369: \end{describe} ! 1370: There are two optional attributes: ! 1371: \begin{describe} ! 1372: \item[description:]\index{attribute types, description} ! 1373: which, by convention, is multi-valued. ! 1374: The distinguished value is the wildlife description ! 1375: of the \verb"commonName" attribute whilst the other ! 1376: values describe the role that the DSA plays in ! 1377: the pilot project; ! 1378: e.g., ! 1379: \begin{quote}\small\begin{verbatim} ! 1380: The Mischevous Varmint ! 1381: A MASTER DSA for l=NY under c=US ! 1382: A SLAVE DSA for ROOT and c=US ! 1383: \end{verbatim}\end{quote} ! 1384: ! 1385: \item[supportedApplicationContext:]\index{attribute types, supportedApplicationContext} ! 1386: which defines the application ports offerred by this ! 1387: process. ! 1388: The current values are: ! 1389: \begin{quote}\small\begin{verbatim} ! 1390: x500DSP & x500DAP & quipuDSP ! 1391: \end{verbatim}\end{quote} ! 1392: \end{describe} ! 1393: Figure~\ref{quipuDSA-edb} shows an entry for a \verb"quipuDSA" object. ! 1394: \tagtable[tp]{INT-8}{Attribute Types for the quipuDSA Object Class}% ! 1395: {quipuDSA-attributes} ! 1396: \tagfigure[tp]{INT-8}{An Example of an Entry for the quipuDSA Object Class}% ! 1397: {quipuDSA-edb} ! 1398: ! 1399: \section {Functional Model} ! 1400: The Functional Model describes the service in terms of entities. ! 1401: As noted earlier, ! 1402: two kinds of entities exist: ! 1403: {\em Directory User Agents\/} (DUAs), ! 1404: which operate on behalf of a user, ! 1405: and ! 1406: {\em Directory System Agents\/} (DSAs), ! 1407: which provide the service. ! 1408: ! 1409: The key aspect of the functional model is deciding how information ! 1410: is transferred through the system. ! 1411: When a DUA requests some action from a DSA ! 1412: (e.g., to read an entry), ! 1413: the DSA may not have that information resident. ! 1414: In this case, ! 1415: the DSA has a choice: ! 1416: it may either contact another DSA which is ``closer'' to the information ! 1417: and propagate the request (this is called {\em chaining\/}), ! 1418: or it may return information about this ``closer'' DSA to the DUA, ! 1419: and let the DUA re-issue its request ! 1420: (this is called {\em referral\/}). ! 1421: WHen DSAs communicate between themselves, ! 1422: they may also chain or refer requests. ! 1423: ! 1424: For the purposes of the pilot, ! 1425: it is important to understand what the term ``resident'' means with respect ! 1426: to information. ! 1427: This residency requirement is: ! 1428: \[\begin{tabular}{|l|l|} ! 1429: \hline ! 1430: \multicolumn{1}{|c|}{\bf Operation Requested}& ! 1431: \multicolumn{1}{|c|}{\bf EDB Required for Residency}\\ ! 1432: \hline ! 1433: read, compare& MASTER, SLAVE, or CACHE\\ ! 1434: list, search& MASTER, or SLAVE\\ ! 1435: update& MASTER\\ ! 1436: \hline ! 1437: \end{tabular}\] ! 1438: Note that after an update occurs, ! 1439: the DSA actually performing the update (the one holding the MASTER EDB) ! 1440: will write the in-core EDB structure to disk prior to returning the result ! 1441: of the operation. ! 1442: Of course, ! 1443: once a MASTER DSA updates its copy of the EDB, ! 1444: there is still the question of how DSAs with SLAVE copies receive this ! 1445: new information. ! 1446: The MASTER DSA does not explicitly inform them. ! 1447: A polling model is used instead. ! 1448: ! 1449: ! 1450: At present, ! 1451: a SLAVE DSA will reload its copy of an EDB when it starts, ! 1452: or when its \verb"manager" issues a management command directing it to do so. ! 1453: Later on, ! 1454: a script will be discussed which performs this task. ! 1455: The frequency at which the script runs (or how often a DSA reboots) ! 1456: determines how out of date a SLAVE copy of an EDB can become. ! 1457: ! 1458: Prior to requesting a copy of an EDB, ! 1459: a DSA checks to see if the timestamp has changed. ! 1460: If so, ! 1461: the EDB is updated. ! 1462: As noted earlier, ! 1463: the timestamp is the second line of an EDB file. ! 1464: Whenever a modification is made to an entry in an EDB file, ! 1465: the MASTER DSA for that EDB will update the timestamp accordingly. ! 1466: Similarly, ! 1467: whenever a text editor is used to modify an EDB file, ! 1468: the user should update the timestamp. ! 1469: The actual value is unimportant: ! 1470: when a DSA examines the timestamp, ! 1471: it looks only for a change; ! 1472: it does not consider whether the EDB is newer or older. ! 1473: ! 1474: Thus, while replication in the pilot is important to speed queries, ! 1475: updates still rely on a centralized entity being available. ! 1476: (This is the best compromise which can be taken without making the system ! 1477: tremendously more complex.) ! 1478: ! 1479: \section {Organizational Model} ! 1480: The Organizational Model describes the service in terms of the policy ! 1481: defining interactions between entities and the information they hold. ! 1482: That is, ! 1483: this model describes how portions of the Directory tree map onto the DSAs. ! 1484: This includes issues of replication and access control. ! 1485: A {\em Directory Management Domain\/} (DMD) defines a portion of the ! 1486: Directory Tree and how it is managed. ! 1487: ! 1488: For the purposes of the pilot project, ! 1489: DSAs are divided into three categories: ! 1490: \begin{describe} ! 1491: \item[Level-0:] These DSAs are run by the sponsors of the NYSERNet/PSI White ! 1492: Pages Pilot. Their goal is to be highly-available ! 1493: authoritative servers. ! 1494: ! 1495: \item[Level-1:] Each organization participating in the pilot project runs ! 1496: a Level-1 DSA.% ! 1497: \footnote{The pilot project sponsors may run the Level-1 DSA on behalf of an ! 1498: organization so requested. ! 1499: This is discouraged, but may be necessary for resource constrained sites.} ! 1500: The Level-1 DSA for a participating organization holds authoritative ! 1501: information about that organization object. ! 1502: ! 1503: \item[Level-2:] As the size of the organization's subtree requires, ! 1504: an organization runs one or more Level-2 DSA to hold a portion of that subtree. ! 1505: Typically, ! 1506: a Level-2 DSA is run for each top-level organizational unit in the ! 1507: participating organization. ! 1508: \end{describe} ! 1509: Figure~\ref{dmd-topology} shows the top-level topology of the pilot project DMD. ! 1510: Each participating organization is represented by an \verb"organization" ! 1511: object ($O_1$ through $O_n$) under the \verb"c=US" tree. ! 1512: Underneath each \verb"c=US@o=O_i" object, ! 1513: one or more objects of class \verb"organizationalUnit" are placed. ! 1514: The structure beneath each \verb"c=US@o=O_i@ou=U_j" object ! 1515: is decided by the participating organization. ! 1516: The pilot project sponsors suggest that only \verb"pilotPerson" objects ! 1517: be placed underneath the organizational units. ! 1518: \tagfigure[tp]{INT-9}{Topology of the Pilot Project Directory Management Domain}% ! 1519: {dmd-topology} ! 1520: ! 1521: Now that the general structure is outlined, ! 1522: how does this portion of the Directory tree map onto DSAs? ! 1523: ! 1524: \subsection {Level-0 DSAs} ! 1525: There are two Level-0 DSAs. ! 1526: Both reside directly under the ROOT. ! 1527: ! 1528: The first Level-0 DSA, \verb"cn=Alpaca", ! 1529: contains a copy of the ROOT EDB which it obtains directly from the ! 1530: DSA holding the MASTER copy of the ROOT EDB. ! 1531: In addition, ! 1532: \verb"cn=Alpaca" is a MASTER DSA for \verb"c=US". ! 1533: It propagates this EDB to the second Level-0 DSA, ! 1534: and to the Level-1 DSAs of all participating organizations ! 1535: (e.g., each DSA holding the MASTER of the \verb"c=US@o=O_i" EDB). ! 1536: In addition, ! 1537: these Level-1 DSAs propagate a copy of their EDB for \verb"c=US@o=O_i" ! 1538: to this Level-0 DSA. ! 1539: Finally, ! 1540: this DSA receives a copy of the EDB for \verb"c=US@l=NY". ! 1541: ! 1542: Figure~\ref{alpaca-edb} shows the entry corresponding to this DSA. ! 1543: A single participating organization is shown in this entry. ! 1544: \tagfigure[tp]{INT-10}{The Entry for the Level-0 DSA, cn=Alpaca}{alpaca-edb} ! 1545: ! 1546: The second Level-0 DSA, \verb"cn=Fruit Bat", ! 1547: contains a copy of the ROOT and \verb"c=US" EDBs which it obtains from ! 1548: \verb"cn=Alpaca". ! 1549: It may propagate these EDBs to any Level-1 DSA ! 1550: (in case \verb"cn=Alpaca" is unavailable for an extended period of time). ! 1551: In addition, ! 1552: these Level-1 DSAs ! 1553: propagate a copy of their MASTER EDB to this Level-0 DSA. ! 1554: Finally, ! 1555: \verb"cn=Fruit Bat" is a MASTER DSA for \verb"c=US@l=NY", ! 1556: which it propagates to \verb"cn=Alpaca". ! 1557: ! 1558: Figure~\ref{fruitbat-edb} shows the entry corresponding to this DSA. ! 1559: As with the \verb"cn=Alpaca" DSA, ! 1560: a single participating organization is shown. ! 1561: \tagfigure[tp]{INT-11}{The Entry for the Level-0 DSA, cn=Fruit Bat}% ! 1562: {fruitbat-edb} ! 1563: ! 1564: Level-0 DSAs perform chaining when handling requests from other DSAs. ! 1565: ! 1566: \subsection {Level-1 DSAs} ! 1567: Each participating organization runs a DSA which contains the MASTER EDB ! 1568: for that organization. ! 1569: This DSA resides directly under \verb"c=US". ! 1570: ! 1571: This DSA receives a copy of the ROOT and \verb"c=US" EDBs from ! 1572: one of the Level-0 DSAs (usually \verb"cn=Alpaca"). ! 1573: It also propagates its MASTER copy of the \verb"c=US@o=O_i" EDB to ! 1574: both Level-0 DSAs. ! 1575: ! 1576: In addition, ! 1577: this DSA propagates its EDB and a copy of the ROOT and \verb"c=US" EDBs ! 1578: to all Level-2 DSAs run by this organization. ! 1579: Similarly, ! 1580: each of these Level-2 DSAs propagate {\em all\/} of the EDBs they ! 1581: MASTER (e.g., \verb"c=US@o=O_i@ou=U_j") to this Level-1 DSA. ! 1582: ! 1583: Level-1 DSAs perform chaining when handling requests from other DSAs. ! 1584: ! 1585: Figure~\ref{spectacledbear-edb} shows the entry corresponding to a Level-1 DSA, ! 1586: which might be named \verb"c=US@cn=Spectacled Bear". ! 1587: A single subordinate Level-2 DSA is shown in this entry. ! 1588: \tagfigure[tp]{INT-12}{The Entry for a Level-1 DSA}{spectacledbear-edb} ! 1589: ! 1590: \subsection {Level-2 DSAs} ! 1591: Each participating organization runs zero or more Level-2 DSAs as the size of ! 1592: their organizational units require. ! 1593: These DSAs reside directly under \verb"c=US@o=O_i". ! 1594: ! 1595: \[\fbox{\begin{tabular}{lp{0.8\textwidth}} ! 1596: \bf NOTE:& At present, the pilot sponsors discourage the use of Level-2 ! 1597: DSAs. ! 1598: ! 1599: Nevertheless, ! 1600: it is important to structure an organization so that it ! 1601: contains organizational units. ! 1602: In this fashion, ! 1603: when a Level-1 DSA is too large to run on an available system, ! 1604: a Level-2 DSA can be used to reduce the memory requirements ! 1605: on the system running the Level-1 DSA. ! 1606: \end{tabular}}\] ! 1607: ! 1608: Level-2 DSAs receive a copy of the \verb"c=US@o=O_i" EDB from their ! 1609: superior Level-1 DSA, ! 1610: along with SLAVE copies of the ROOT and \verb"c=US" EDBs. ! 1611: They also propagate all MASTER copies of the EDBs they hold to this Level-1 ! 1612: DSA. ! 1613: ! 1614: Level-1 DSAs perform referrals when handling requests from other DSAs. ! 1615: ! 1616: Figure~\ref{toucan-edb} shows the entry corresponding to a Level-2 DSA, ! 1617: which might be named \verb"c=US@o=NYSERNet Inc.@cn=Toucan". ! 1618: \tagfigure[tp]{INT-13}{The Entry for a Level-2 DSA}{toucan-edb} ! 1619: ! 1620: \subsection {DUAs} ! 1621: In terms of the pilot project, ! 1622: DUAs conceptually exist at the same level as Level-2 DSAs. ! 1623: When a DUA associates with a DSA to access the Directory service, ! 1624: chaining is preferred over referrals, ! 1625: so that the associated DSA may cache the results to any query made by the DUA. ! 1626: This will slightly enhance the performance for other DUAs which later ! 1627: associate with this particular DSA. ! 1628: ! 1629: The preference to be used when associating with a DSA is: ! 1630: \begin{itemize} ! 1631: \item ``closest'' Level-2 DSA; followed by ! 1632: ! 1633: \item Level-1 DSA; followed by ! 1634: ! 1635: \item \verb"cn=Fruit Bat"; followed by ! 1636: ! 1637: \item \verb"cn=Alpaca". ! 1638: \end{itemize} ! 1639: ! 1640: \section {Security Model} ! 1641: The Security Model describes the service in terms of authentication ! 1642: and authorization. ! 1643: For the purposes of the pilot project, ! 1644: ``simple'' authentication is performed (i.e., passwords). ! 1645: The pilot project supports an anonymous DN, termed the NULL DN, ! 1646: which may be used for public, read-only access. ! 1647: Otherwise, ! 1648: users are required to bind to the Distinguished Name which corresponds ! 1649: to them. ! 1650: ! 1651: Note that an important feature of the DMD topology presented in the ! 1652: Organizational Model is that information on users ! 1653: (and hence their passwords and any other sensitive information) ! 1654: is kept only on Level-1 and Level-2 DSAs. ! 1655: Since, ! 1656: in general, ! 1657: these DSAs are run by each participating organization, ! 1658: each organization may safeguard the disk-resident EDB files accordingly. ! 1659: ! 1660: Because the ROOT, \verb"c=US", and \verb"c=US@o=O_i" EDBs are widely ! 1661: replicated, ! 1662: entries contained therein should not rely on \verb"self" access control ! 1663: for modification. ! 1664: That is, ! 1665: the entries contained in this EDBs should: ! 1666: \begin{itemize} ! 1667: \item if of object class \verb"quipuDSA", have a \verb"manager" ! 1668: attribute which resolves to an entry which is not propagated outside ! 1669: of the associated organization; e.g., ! 1670: \begin{quote}\small\begin{verbatim} ! 1671: manager= c=US@o=O_i@cn=Manager ! 1672: \end{verbatim}\end{quote} ! 1673: which is an object of classe \verb"alias" to ! 1674: \begin{quote}\small\begin{verbatim} ! 1675: c=US@o=O_i@ou=Development@cn=FirstName LastName ! 1676: \end{verbatim}\end{quote} ! 1677: and, ! 1678: ! 1679: \item regardless of the object class, ! 1680: always use \verb"group" access to specify an entry which is not ! 1681: propagated outside of the associated organization; e.g., ! 1682: \begin{quote}\scriptsize\begin{verbatim} ! 1683: acl= others # read # entry ! 1684: acl= group # c=US@o=O_i@cn=Manager # write # entry ! 1685: acl= others # read # default ! 1686: acl= group # c=US@o=O_i@cn=Manager # write # default ! 1687: acl= others # compare # attributes # accessControlList$userPassword ! 1688: acl= group # c=US@o=O_i@cn=Manager # write # attributes # accessControlList$userPassword ! 1689: \end{verbatim}\end{quote} ! 1690: \end{itemize} ! 1691: Note that the object associated with the \verb"manager" attribute of a DSA ! 1692: is effectively the ``super user'' for all EDBs which that DSA MASTERs. ! 1693: As such, ! 1694: the \verb"userPassword" associated with the corresponding object should be ! 1695: protected to the greatest extent practical. ! 1696: ! 1697: Since there is no hope of protecting the passwords for a DSA or any object ! 1698: residing in the ROOT, \verb"c=US", and possibly \verb"c=US@o=O_i" EDBs, ! 1699: this policy effectively revokes any privileges assocated with the passwords of ! 1700: the entries contained in these EDBs. ! 1701: ! 1702: \section {Running your DMD} ! 1703: The pilot sponsors prefer that you administer your own DMD by running the ! 1704: pilot software on one of your own systems, ! 1705: doing maintenance, ! 1706: and so on. ! 1707: You should now continue with Chapter~\ref{installation}. ! 1708: ! 1709: However, ! 1710: if your site is a member of NYSERNet, Inc., ! 1711: then the pilot sponsors will administer the DMD for you, ! 1712: if you lack the facilities to do so. ! 1713: In this case, ! 1714: you will be required to provide EDB files to the pilot sponsors. ! 1715: Contact ! 1716: \begin{quote}\small\begin{verbatim} ! 1717: [email protected] ! 1718: \end{verbatim}\end{quote} ! 1719: to find out the full details. ! 1720: ! 1721: For now, ! 1722: note that entries are formatted as described above, ! 1723: but with a few read-only modifications: ! 1724: \begin{itemize} ! 1725: \item The \verb"accessControlList" attribute is simply: ! 1726: \begin{quote}\small\begin{verbatim} ! 1727: acl= ! 1728: \end{verbatim}\end{quote} ! 1729: ! 1730: \item The \verb"userPassword" attribute is not present. ! 1731: \end{itemize} ! 1732:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.