home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-ids-dirnaming-01.txt < prev    next >
Text File  |  1997-03-19  |  43KB  |  987 lines

  1.  
  2. IDS Working Group                                            Al Grimstad
  3. INTERNET-DRAFT                                                Rick Huber
  4.                                                             Sri Sataluri
  5.                                                                     AT&T
  6.                                                              Steve Kille
  7.                                                               Isode Ltd.
  8.                                                                Mark Wahl
  9.                                                      Critical Angle Inc.
  10.  
  11.                                                           March 12, 1997
  12.  
  13.  
  14.              Naming Plan for an Internet Directory Service
  15.                Filename: draft-ietf-ids-dirnaming-01.txt
  16.  
  17.  
  18. Status of this Memo
  19.  
  20.  
  21. This document is an Internet-Draft.  Internet-Drafts are working
  22. documents of the Internet Engineering Task Force (IETF), its areas, and
  23. its working groups.  Note that other groups may also distribute working
  24. documents as Internet-Drafts.
  25.  
  26. Internet-Drafts are draft documents valid for a maximum of six months
  27. and may be updated, replaced, or obsoleted by other documents at any
  28. time.  It is inappropriate to use Internet- Drafts as reference
  29. material or to cite them other than as ``work in progress.''
  30.  
  31. To learn the current status of any Internet-Draft, please check the
  32. ``1id-abstracts.txt'' listing contained in the Internet- Drafts Shadow
  33. Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  34. munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  35. ftp.isi.edu (US West Coast).
  36.  
  37. Distribution of this document is unlimited.  Editorial comments should
  38. be sent directly to the authors.  Technical discussion will take place
  39. on the IETF Integrated Directory Services mailing list,
  40. ietf-ids@umich.edu.
  41.  
  42.            This Internet Draft expires August 1, 1997.
  43.  
  44. Abstract
  45.  
  46. Application of the conventional X.500 approach to naming has, in the
  47. experience of the authors, proven to be an obstacle to the creation of
  48. directory services.  We propose a new directory naming plan that
  49. leverages the strengths of the most popular and successful Internet
  50. naming schemes for naming objects in a hierarchical directory.  This
  51. plan can, we believe, facilitate the creation of an Internet White
  52. Pages Service (IWPS) and other directory-enabled applications by
  53. overcoming the problems encountered by those using the conventional
  54. recommended X.500 approach to naming.
  55.  
  56. 1.0 EXECUTIVE SUMMARY
  57.  
  58. The conventional approach to naming taken by the X.500 community has,
  59. in the experience of the authors, shown itself to be an obstacle to
  60. the creation of directory services.  The required registration
  61. infrastructure is either non-existent or largely ignored.  The
  62. infrastructure that does exist is cumbersome to use and tends to
  63. produce counterproductive results.  The attributes used for naming
  64. have been confusing for users and inflexible to managers and operators
  65. of directory services.
  66.  
  67. This paper describes an alternative directory naming plan for the
  68. construction of the Internet White Pages Service (IWPS) and other
  69. directory-enabled applications. It has three main features.  First, it
  70. bases directory name construction on the existing infrastructure of
  71. names in the Internet, that is, names from the Domain Name System
  72. (DNS) and mailbox identifiers structured according to RFC822.  Second,
  73. names constructed according to this plan use existing standardized
  74. directory attributes and can co-exist with names constructed according
  75. to traditional X.500 naming practices.  And third, the hierarchical
  76. pattern of directory names need not mirror exactly the domain part of
  77. RFC822 mailbox identifiers, but can be structured to support various
  78. requirements such as data partitioning and access control lists (ACLs)
  79. based on the naming hierarchy.
  80.  
  81. Here, in summary, is our proposal.
  82.  
  83. For naming entries of leaf directory objects such as users, groups,
  84. server applications and certification authorities in a hierarchical
  85. directory (e.g., one accessed via LDAP, the Lightweight Directory
  86. Access Protocol), we propose the use of the user identifier attribute
  87. "uid" for the relative distinguished name.  The value of this
  88. attribute should be an RFC822 address, e.g.,
  89.  
  90.     uid=John.Smith@acme.com
  91.  
  92. To address situations where it is inconvenient or inappropriate to use
  93. an RFC822 mailbox identifier for a leaf directory object, we propose
  94. the use of the conventional common name attribute, "cn".
  95.  
  96. The upper portions of the hierarchical directory tree should be
  97. constructed using the components of registered DNS names using the
  98. domain component attribute "dc".  The directory name for the
  99. organization having the domain name acme.com will then be, e.g.,
  100.  
  101.     dc=acme, dc=com
  102.  
  103. Organizations can add additional directory structure, for example to
  104. support implementation of access control lists or partitioning of their
  105. directory information, by using registered subdomains of DNS names,
  106. e.g.,
  107.  
  108.     dc=corporate, dc=acme, dc=com
  109.  
  110. Directory distinguished names will thus have the following structure,
  111. e.g.,
  112.  
  113.     uid=John.Smith@acme.com, dc=acme, dc=com
  114.     uid=Mary.Jones@acme.com, dc=corporate, dc=acme, dc=com
  115.     uid=J.Smith@worldnet.att.net, dc=legal, dc=acme, dc=com
  116.     cn=Reading Room, dc=physics, dc=national-lab, dc=edu
  117.  
  118. Searching the directory (for persons, or other similar objects) based
  119. on exact matching of the uid attribute should be optimized in the
  120. directory service such that it is essentially equivalent to searching
  121. using a directory distinguished name.
  122.  
  123. External mechanisms can be used to locate the proper directory server
  124. to query to obtain directory information.
  125.  
  126. 2.0 THE PROBLEM 
  127.  
  128. The X.500 Directory model [1] can be used to create a world-wide
  129. distributed directory. The Internet X.500 Directory Pilot has been
  130. operational for several years and has grown to a size of about 1.5
  131. million entries of varying quality.  The rate of growth of the pilot is
  132. far lower than the rate of growth of the Internet during the pilot
  133. period.
  134.  
  135. There are a substantial number of contributing factors that have
  136. inhibited the growth of this pilot.  The common X.500 approach to
  137. naming, while not the preponderant problem, has contributed in several
  138. ways to limit the growth of an Internet White Pages Service based on
  139. X.500.
  140.  
  141. 2.1 Naming Problems
  142.  
  143. The conventional way to construct names in the X.500 community is
  144. documented as an informative (i.e., not officially standardized) Annex
  145. B to X.521. The relative distinguished name (RDN) of a user consists of
  146. a common name (cn) attribute. This is meant to be what -- in the user's
  147. particular society -- is customarily understood to be the name of that
  148. user. The distinguished name of a user is the combination of the name
  149. of some general object, such as an organization or a geographical unit,
  150. with the common name. There are two main problems with this style of
  151. name construction.
  152.  
  153. First, the common name attribute, while seeming to be user-friendly,
  154. cannot be used generally as an RDN in practice.  In any significant
  155. set of users to be named under the same Directory Information Tree
  156. (DIT) node there will be collisions on common name.  There is no way
  157. to overcome this other than either by forcing uniqueness on common
  158. names, something they do not possess, or by using an additional
  159. attribute to prevent collisions.  This additional attribute normally
  160. needs to be unique in a much larger context to have any practical
  161. value.  The end result is a RDN that is very long and unpopular with
  162. users.
  163.  
  164. Second, and more serious, X.500 has not been able to use any
  165. significant number of pre-existing names.  Since X.500 naming models
  166. typically use organization names as part of the hierarchy [2, 3],
  167. organization names must be registered.  As organization names are
  168. frequently tied to trademarks and are used in sales and promotions,
  169. registration can be a difficult and acrimonious process.
  170.  
  171. The North American Directory Forum (NADF, now the North Atlantic
  172. Directory Forum but still the NADF) proposed to avoid the problem of
  173. registration by using names that were already registered in the "civil
  174. naming infrastructure" [3].  Directory distinguished names would be
  175. based on an organization's legal name as recognized by some
  176. governmental agency (county clerk, state secretary of state, etc.) or
  177. other registering entity such as ANSI.
  178.  
  179. This scheme has the significant advantage of keeping directory service
  180. providers out of disputes about the right to use a particular name,
  181. but it leads to rather obscure names.  Among these obscurities, the
  182. legal name almost invariably takes a form that is less familiar and
  183. longer than what users typically associate with the organization.  For
  184. example, in the US a large proportion of legal organization names end
  185. with the text ", Inc." as in "Acme, Inc."  Moreover, in the case of
  186. the US, the civil naming infrastructure does not operate nationally,
  187. so the organization names it provides must be located under state and
  188. regional DIT nodes, making them difficult to find while browsing the
  189. directory.  NADF proposes a way to algorithmically derive
  190. multi-attribute RDNs which would allow placement of entries or aliases
  191. in more convenient places in the DIT, but these derived names are
  192. cumbersome and unpopular.  For example, suppose Nadir is an
  193. organization that is registered in New Jersey civil naming
  194. infrastructure under the name "Nadir Networks, Inc." Its civil
  195. distinguished name (DN) would then be
  196.  
  197.     o="Nadir Networks, Inc.", st=New Jersey, c=US
  198.  
  199. while its derived name which is unambiguous under c=US directly is
  200.  
  201.     o="Nadir Networks, Inc." + st=New Jersey, c=US
  202.  
  203. More generally, the requirement for registration of organizations in
  204. X.500 naming has led to the establishment of national registration
  205. authorities whose function is mainly limited to assignment of X.500
  206. organization names.  Because of the very limited attraction of X.500,
  207. interest in registering an organization with one of these national
  208. authorities has been minimal. Finally, multi-national organizations are
  209. frustrated by a lack of an international registration authority.
  210.  
  211. 2.2 Directory Models
  212.  
  213. The Internet community proposed the Light-weight Directory Access
  214. Protocol (LDAP) [4], initially, as a simplified access method for
  215. X.500 directories.  However, more recently, a number of different
  216. directory server implementations have begun to appear that use LDAP as
  217. an access protocol to backend retrieval systems not based on X.500.
  218.  
  219. The X.500 Directory, via its knowledge model, attempts to build a
  220. world-wide directory in a top-down fashion.  This approach has only met
  221. with partial success.
  222.  
  223. The appearance on the Internet of directory systems supporting LDAP
  224. but not tied into the world of X.500 will, in our opinion, stimulate
  225. the creation of directories in a bottom-up fashion [5].  These
  226. directory servers or directory islands will be loosely tied together
  227. via LDAP referrals and other external mechanisms.
  228.  
  229. For such loosely coordinated mechanisms to work effectively, a few of
  230. the general properties of X.500 need to be retained. Among these are
  231. (1) an approach to naming that makes the linkage of the directory
  232. islands as simple as possible, and (2) an extendible schema of
  233. directory information with a widely accepted common base. The naming
  234. plan described here supports these two characteristics.
  235.  
  236. 2.3 Addressing the Problems
  237.  
  238. This paper describes a directory naming plan that is a radical
  239. departure from the traditional X.500 naming scheme -- the X.500 scheme
  240. has not been generally accepted by the Internet community and has been
  241. found to be very clumsy in implementing and administering directory
  242. services by the authors.
  243.  
  244. This naming plan is straightforward to implement by both classic X.500
  245. systems and islands of stand-alone LDAP servers.  Its unique strength
  246. lies in its use of the existing Internet naming schemes -- RFC822
  247. addresses [6] and the Domain Name System [7].  Further, by use of an
  248. attribute, the user ID attribute, and a tree structure based on the
  249. DNS, the plan, if broadly implemented, may well simplify the
  250. construction of external mechanisms to locate appropriate LDAP
  251. servers.
  252.  
  253. The focus of this naming plan is on naming Internet users,
  254. certification authorities and server applications.  It is not
  255. applicable to resolving problems with naming objects such as X.500
  256. residential persons which typically lack e-mail addresses.  Because it
  257. is a hierarchical plan using typed attribute values (tags), the naming
  258. plan can co-exist with other hierarchical plans using other typed
  259. attributes such as a plan for residential persons and the conventional
  260. X.521 Annex B plan.
  261.  
  262. 3.0 TECHNOLOGICAL ASSUMPTIONS
  263.  
  264. We assume that the fundamental protocol interface to systems offering
  265. general directory services will be the TCP/IP-based Lightweight
  266. Directory Access Protocol.  Objects -- users, certification
  267. authorities and server applications -- are named in this protocol in a
  268. hierarchical fashion and represented as described in RFC 1779 [8].  We
  269. also assume that user authentication and other security services will
  270. increasingly depend on public key cryptographic techniques such as
  271. those used in the Secure Sockets Layer (SSL) [9]. These techniques use
  272. information such as certificates (certified public cryptographic keys)
  273. in which objects are identified with directory names.
  274.  
  275. 4.0 IDENTIFICATION
  276.  
  277. The one universally accepted scheme of user identification (actually
  278. user maildrop or mailbox identification) in the Internet today is the
  279. RFC822 syntax for e-mail addresses.  The RFC822 syntax contains a
  280. domain name and a user identifier that is local to that domain.
  281.  
  282. 4.1 Domain Identification
  283.  
  284. The syntax of a domain identifier is defined by the Domain Name System
  285. (DNS) in RFC 1034 [6].  Examples of such identifiers are acme.com and 
  286. foo.nj.us.
  287.  
  288. 4.2 RFC822 Identification
  289.  
  290. The syntax of an RFC822 identifier is:
  291.  
  292.     local@domain
  293.  
  294. where
  295.  
  296.     "domain"      is a hierarchically structured identifier as defined
  297.                   by the DNS, and
  298.  
  299.     "local"      is an identifier for a user (literally a maildrop)
  300.                   that is valid within the domain "domain".
  301.  
  302. Examples of such identifiers are J.Smith@acme.com and
  303. S.Johnson@corporate.acme.com.
  304.  
  305. Each user for whom information is maintained in a directory service
  306. will typically have at least one e-mail address structured according
  307. to RFC822.  While the user may well have many such addresses, one will
  308. be selected for the purpose of user identification.  We call this the
  309. "distinguished" e-mail address or the "distinguished" RFC822
  310. identifier for the user.
  311.  
  312. 5.0 DIRECTORY DISTINGUISHED NAMES
  313.  
  314. 5.1 Overview of Distinguished Names
  315.  
  316. The general structure of a name in LDAP, termed a distinguished name
  317. (DN), is:
  318.  
  319.     attribute, attribute, ... attribute
  320.  
  321. An "attribute" is a pairing of a type identifier and a value separated
  322. by "=". For example, cn=Samuel Johnson is an attribute with type
  323. identifier "cn", short for common name, and value "Samuel Johnson".
  324.  
  325. The order of the attributes in a DN is significant. Like DNS
  326. identifiers, DNs are hierarchical and "little endian", that is, the
  327. most global piece comes last. An example of a DN is:
  328.  
  329.     cn=Samuel Johnson, o=Famous Lexicographers, c=GB
  330.  
  331. where:
  332.  
  333.     cn=Samuel Johnson means the attribute type "cn" has the value
  334.     "Samuel Johnson",
  335.  
  336.     o=Famous Lexicographers means that the attribute type "o", short
  337.     for organization name, has the value "Famous Lexicographers", and
  338.  
  339.     c=GB means that the attribute type "c", short for country name, has
  340.     the value "GB", the international abbreviation for the country
  341.     Great Britain.
  342.  
  343. The set of all DNs forms a tree structure that is called the Directory
  344. Information Tree (DIT).
  345.  
  346. 5.2 Directory Distinguished Names
  347.  
  348. Suppose an organization, e.g., Acme, wants to bring up a directory
  349. service.  It either has a registered DNS name or it should get one.
  350.  
  351. Given a DNS name, we will use a form of DN construction largely based
  352. on RFC1279 [10].  This RFC shows how to map an RFC822 e-mail address to
  353. a DN.  We differ from it in two respects: (1) we use a mapping that
  354. starts at the root of the DIT; and (2) we use the attribute type user
  355. ID (userid or uid) for the first attribute of the DN. The value of the
  356. uid attribute is a complete RFC822 address that may but need not be
  357. related to the DN of the parent entry.
  358.  
  359. The pattern for the organization's DN will be:
  360.  
  361.     dc=A, ..., dc=Z
  362.  
  363. and the pattern for the DN of a user in that organization will be:
  364.  
  365.     uid=RFC822 identifier, dc=A, ..., dc=Z
  366.  
  367. We consider each of the two attribute types, dc and uid, used to form
  368. the DN in turn.
  369.  
  370. 5.2.1 Domain Component (dc)
  371.  
  372. The domain component attribute is defined and registered in RFC1274
  373. [2].
  374.  
  375. The domain component attributes of a organization's DN will normally be
  376. constructed from the domain name of that organization.  That is, for the
  377. organization "Acme, Inc." with domain name "acme.com", the DN will be
  378.     
  379.     dc=acme, dc=com
  380.  
  381. The domain component attributes of a user's DN will normally be
  382. constructed from the domain name of his/her distinguished e-mail
  383. address.  That is, for the user uid=J.Smith@acme.com the domain
  384. component attributes would typically be:
  385.  
  386.     dc=acme, dc=com
  387.  
  388. The full LDAP DN for this user would then be:
  389.  
  390.     uid=J.Smith@acme.com, dc=acme, dc=com
  391.  
  392. The algorithm for constructing the uid part of the DN is given in section 
  393. 5.2.2.
  394.  
  395. It is important to emphasize that the elements of the domain name of
  396. an RFC822 identifier may, BUT NEED NOT, be the same as the domain
  397. components of the DN.  This means that the domain components provide a
  398. degree of freedom to support access control or other directory
  399. structuring requirements that need not be mechanically reflected in
  400. the user's e-mail address.  We do not want under any condition to
  401. force the user's e-mail address to change just to facilitate a new
  402. system requirement such as a modification in an access control
  403. structure.  It should also be noted that while we do not require that
  404. the domain components match the RFC822 identifier, we DO require that
  405. the concatenated domain components form a registered domain name, that
  406. is, one that is represented in the DNS. This automatically avoids name
  407. conflicts in the directory hierarchy.
  408.  
  409. To provide an example of a DN which deviates from what might be
  410. considered the default structure, consider the following scenario.
  411.  
  412. Suppose that J.Smith needs to be granted special permissions to
  413. information in the dc=acme, dc=com part of the LDAP DIT.  Since it will
  414. be, in general, easier to organize special users by their name
  415. structure than via groups (an arbitrary collection of DNs), we use
  416. subdomains for this purpose.  Suppose the special permissions were
  417. required by users in the MIS organizational unit.  A subdomain
  418. "mis.acme.com" is established, if it does not already exist, according
  419. to normal DNS procedures.  The special permissions will be granted to
  420. users with the name structure:
  421.  
  422.     uid=*, dc=mis, dc=acme, dc=com
  423.  
  424. The DN of J.Smith in this case will be:
  425.  
  426.     uid=J.Smith@acme.com, dc=mis, dc=acme, dc=com
  427.  
  428. In principal, there is nothing to prevent the domain name elements of
  429. the RFC822 identifier from being completely different from the domain
  430. components of the DN.  For instance, the DN for a J.Smith could be:
  431.  
  432.     uid=J.Smith@worldnet.att.net, dc=mis, dc=acme, dc=com
  433.  
  434. While we do not REQUIRE that the domain name part of the uid match the
  435. dc components of the directory distinguished name, we suggest that this
  436. be done where possible. At a minimum, if the most significant pieces of
  437. the DN and the uid are the same (i.e., "dc=acme, dc=com" and
  438. "acme.com") the likelihood, based on a knowledge of a user's e-mail
  439. address, of discovering an appropriate directory system to contact to
  440. find information about the user is greatly enhanced.
  441.  
  442. The example above represents a situation where this suggestion isn't
  443. possible because some of the users in a population have mailbox
  444. identifiers that differ from the pattern of the rest of the users,
  445. e.g., most mailboxes are of the form local@acme.com, but a
  446. subpopulation have mailboxes from an ISP and therefore mailboxes of
  447. the form local@worldnet.att.net.
  448.  
  449. 5.2.2 User ID (uid)
  450.  
  451. The userid (uid) attribute is defined and registered in RFC1274 [2].
  452.  
  453. The value of the user ID attribute for the user's name will be the
  454. user's distinguished e-mail address in RFC822 syntax.  For example, if
  455. there is a user affiliated with the organization Acme having
  456. distinguished e-mail address J.Smith@acme.com, the uid attribute will
  457. be:
  458.  
  459.     uid=J.Smith@acme.com
  460.  
  461. We strongly suggest that uid=J.Smith@acme.com to be a working e-mail
  462. address.  The whole idea here is that users will remember a working
  463. e-mail address; we shouldn't plague them with broken RFC822 addresses
  464. constructed for the convenience of the directory service only.  The A
  465. or MX record for the domain name can point to either a customer or
  466. network service provider host.
  467.  
  468. Since an RFC822 identifier unambiguously identifies a user, it can be
  469. used (by system processes) to search a particular directory system
  470. (e.g. an LDAP server or a related set of LDAP servers) to find a user's
  471. entry.  The user need not -- and we assume typically will not -- even
  472. know his/her DN.  See Section 8.1.
  473.  
  474. Directory administrators having several RFC822 identifiers to choose
  475. from when constructing a DN for a user should consider the following
  476. factors:
  477.  
  478.     o Machine-independent addresses are likely to be more stable,
  479.       resulting in directory names that change less. Thus an identifier
  480.       such as:
  481.  
  482.           js@acme.com
  483.  
  484.       may well be preferable to one such as:
  485.  
  486.          js@blaster.third-floor.acme.com.
  487.  
  488.     o Use of some form of "handle" for the "local" part that is distinct
  489.       from a user's real name may result in fewer collisions and
  490.       thereby lessen user pain and suffering.  Thus the identifier:
  491.  
  492.           js@acme.com
  493.  
  494.       may well be preferable to one such as:
  495.  
  496.           J.Smith@acme.com
  497.  
  498. Practical experience with use of the RFC822 mailbox identifier scheme
  499. described here has shown that there are situations where it is
  500. convenient to use such identifies for all users in a particular
  501. population, although a few users do not, in fact, possess working
  502. mailboxes.  For example, an organization may have a existing unique
  503. identification scheme for all employees that is used as a alias to the
  504. employees' real mailboxes -- which may be quite heterogeneous in
  505. structure.  The identification scheme works for all employees to
  506. identify unambiguously each employee; it only works as an e-mail alias
  507. for those employees having real mailboxes.  For this reason it would
  508. be a bad assumption for directory-enabled applications to use the uid
  509. as a mailbox; the value(s) of the mail attribute should always be
  510. checked.
  511.  
  512. 5.2.3 Common Name
  513.  
  514. To address situations where it is inconvenient or inappropriate to use
  515. an RFC822 mailbox identifier for the RDN of a leaf directory object,
  516. we propose the use of the conventional common name attribute, "cn".
  517.  
  518. As an example of the assignment of a DN to a directory object for
  519. which the creation of a uid would be cumbersome, consider naming an
  520. object of class room, specified in 8.3.5 of the COSINE and Internet
  521. X.500 Schema [2]. For example, the following name might be more
  522. natural for the directory administrator to assign and for applications
  523. using this sort of object to use:
  524.  
  525.     cn=Reading Room, dc=physics, dc=national-lab, dc=edu
  526.  
  527. In certain environments, especially where there are a relatively small
  528. number of users requiring DNs, that is, where name collisions of the
  529. common name will not happen, it may be convenient to use the
  530. traditional X.500 common name attribute as in:
  531.  
  532.     cn=John Smith, dc=mis, dc=acme, dc=com
  533.  
  534. 6.0 NAMING FOR CERTIFICATES
  535.  
  536. The certified public keys, certificates, used in SSL and other forms of
  537. strong (i.e. cryptographically based) authentication are structured
  538. according to the ITU X.509 standard.  A certificate contains two names
  539. of importance, the name of the "subject" and the "issuer".  The subject
  540. will be either a user or a server; the issuer will be a certification
  541. authority.  The encoding of these names differs significantly from the
  542. encoding of LDAP names which are simply character strings.  In
  543. particular, the attribute types used in names are encoded as globally
  544. unique "object identifiers."  The object identifiers relevant to the
  545. names considered in this naming plan are assigned in either the X.500
  546. standards (ITU X.520) or RFC1274, the COSINE and Internet X.500 Schema
  547. [2].
  548.  
  549. 6.1 User Certificates
  550.  
  551. For user certificates issued by a certification authority, the subject
  552. name will be the proper X.509 representation of the user hierarchical
  553. DNs described in section 5 of this paper.
  554.  
  555. 6.2 Server/Site Certificates
  556.  
  557. As certificates are used more and more for authentication, applications
  558. that run as processes on systems need to be named so that they can also
  559. be located in the directory.  Since the name of the subject is encoded
  560. in a certificate, for application instances to be portable, we need a
  561. naming scheme that is independent of the underlying hardware platform
  562. and its IP address or DNS host name.
  563.  
  564. In existing Internet products that use certificates, the terms "Server
  565. Certificate" and "Site Certificate" have been (mis-)used to identify
  566. application instances.
  567.  
  568. We propose that application instances be named similar to individuals
  569. as entities under a specific branch of the DIT and be given appropriate
  570. unique RFC822 identifiers.  The RFC822 identifier so chosen is not
  571. constrained by the naming plan.  As illustrated in the three examples
  572. below, it can be either host-independent (1,2) or host dependent (3).
  573. If host-independent, it can be based on a subdomain (2) of the
  574. organization's domain name or, if such registration is convenient,
  575. based on the domain name (1) itself.
  576.  
  577. A few examples of application instance names are:
  578.  
  579.     uid=dirsrv0@acme.com, dc=sales, dc=acme, dc=com                (1)
  580.     uid=certsrv0@sales.acme.com, dc=sales, dc=acme, dc=com         (2)
  581.     uid=gnarlysrv0@surf.sales.acme.com, dc=sales, dc=acme, dc=com  (3)
  582.  
  583. This name is used in the construction of the server's certificate.
  584.  
  585. A consequence of this method of constructing names is that application
  586. instances have mailboxes. This can be thought of as an opportunity to
  587. provide users with a predictable contact for resolution of operational
  588. problems with the application much like postmaster@DOMAIN is the
  589. predictable contact for e-mail problems at DOMAIN.
  590.  
  591. To address situations where it is inconvenient or inappropriate to use
  592. an RFC822 mailbox identifier for the RDN of an application instance,
  593. we propose the use of the conventional common name attribute, "cn".
  594.  
  595. 6.3 Certification Authority Certificates
  596.  
  597. A certification authority (CA) is the trusted guarantor for a user or
  598. server certificate.  The CA's name appears in the "issuer" field of the
  599. certificate it issues.  The names of several CAs are already built into
  600. popular Internet Web browsers such as the Netscape Navigator and the
  601. Microsoft Internet Explorer.  Some examples of such CA names are:
  602.  
  603.     ou=Directory Services, o=AT&T, c=US
  604.     ou=Secure Server Certification Authority, o="RSA Data Security, Inc.",
  605.        c=US
  606.  
  607. These names use the traditional X.500 attributes for naming. These
  608. attributes are organizational unit name (ou), organization name (o)
  609. and country name (c).  To maintain compatibility, the appropriate CAs
  610. can be incorporated in any LDAP-based directory service with these
  611. existing names.
  612.  
  613. In future, new certification authorities may be assigned names
  614. following the structure described in section 5 of this
  615. document. Examples of such new CA names are:
  616.  
  617.     uid=certification-authority@CAs-R-us.com, dc=CAs-R-us, dc=com
  618.     cn=certification authority, dc=CAs-R-us, dc=com
  619.     dc=certification-authority, dc=CAs-R-us, dc=com
  620.  
  621. 7.0 OTHER DIRECTORY OBJECTS
  622.  
  623. This subsection of the naming plan is concerned with other
  624. miscellaneous directory objects for which a regular naming structure
  625. is required. This collection of objects consists, at this point, only
  626. of groups.  Other documents may define the naming plans for representing
  627. other kinds of objects in the directory.
  628.  
  629. 7.1 Groups
  630.  
  631. A group is a directory object, and therefore has a directory name.  It
  632. expresses membership of other directory objects in a set. Examples of
  633. groups are: a set of users permitted to modify the entries in a
  634. subtree of the DIT; a set of users permitted to view a related set of
  635. web pages; and a set of e-mail recipients interested in a particular
  636. subject. Note that the latter example is, from a UNIX-centric
  637. perspective, at this point a hypothetical directory oriented
  638. example. In practice, groups in the UNIX-centric part of e-mail world,
  639. more commonly termed mailing lists, are not represented by directory
  640. group entries and members of the  group are identified by an e-mail
  641. address rather than a directory name.
  642.  
  643. Group objects in the directory are named following the same structure
  644. as users and servers: the RDN of the object uses a uid attribute value
  645. and the group object is placed under an appropriate domain object. As
  646. in the case of users and servers, the uid attribute value must be a
  647. valid RFC822 mailbox identifier. There is no particular requirement
  648. and, in fact, it might even be undesirable, that e-mail sent to this
  649. mailbox should be exploded to the mailboxes of the members of the group.
  650. On the other hand, it might well be convenient that the uid used as
  651. the RDN of a group object be the mailbox of a list rather than an
  652. individual.
  653.  
  654. For example, suppose the directory administrators for the dc=acme,
  655. dc=com subtree of the DIT have set up an e-mail list
  656. ds-admin@acme.com. It might be convenient to create a directory group
  657. with the name
  658.  
  659.     uid=ds-admin@acme.com, dc=acme, dc=com
  660.  
  661. for the construction of access control lists in the acme subtree,
  662. granting members of this list modification permissions on all the
  663. entries. In this case e-mail sent to ds-admin@acme.com would typically
  664. go, in a UNIX-centric environment, not to the members of the directory
  665. group as defined by the attribute of the group's entry that identifies
  666. the members, but to the list of mailboxes exploded at the host
  667. acme.com.
  668.  
  669. To address situations where it is inconvenient or inappropriate to use
  670. an RFC822 mailbox identifier for the RDN of a group object, we propose
  671. the use of the conventional common name attribute, "cn".
  672.  
  673. 8.0 IMPLEMENTATION ISSUES
  674.  
  675. 8.1 Directory Services Considerations
  676.  
  677. This naming plan has been designed so that a user's entry can be found
  678. unambiguously using nothing but the user's distinguished e-mail address --
  679. assuming that the query is sent to the right LDAP directory server.
  680. Systems having the user's DN in hand can, of course, directly access
  681. the user's entry via LDAP.
  682.  
  683. An LDAP search request with the following components will either (1)
  684. find uniquely the entry of a user with the provided distinguished
  685. e-mail address, or (2) indicate that no user has the provided e-mail
  686. address as a distinguished e-mail address:
  687.  
  688.     baseObject: root
  689.     scope: wholeSubtree
  690.     filter: equalityMatch (uid == distinguished e-mail address)
  691.  
  692. A search such as this is possible in LDAP servers being planned
  693. because, unlike X.500 servers, the LDAP servers we envision are not
  694. universally interconnected in one global system according to the X.500
  695. knowledge model.  In X.500 such a search would propagate to all the
  696. servers in the system; in the envisioned LDAP system it would be
  697. limited to one server (or potentially a small set of servers).
  698.  
  699. In a world of LDAP islands, the issue of finding the right island to
  700. which to direct a directory query arises.  The new version of LDAP
  701. under design in the IETF [11] has a referral mechanism.  Given a query,
  702. a server can return a referral to an other LDAP server that might hold
  703. the data. This approach can be used to tie together the servers holding
  704. the distributed data of an LDAP island.  By generalizing this concept
  705. one can imagine building a simple referral server that knows about the
  706. LDAP islands of the Internet. It would compare the naming information
  707. in a query it receives with its knowledge of LDAP islands and return a
  708. referral to the appropriate island.
  709.  
  710. It has been traditional in X.500 and LDAP directory services to employ
  711. the common name (cn) attribute in naming.  While this naming plan
  712. doesn't require use of the cn attribute in naming, it should be
  713. stressed that it is still quite important.  It will play a significant
  714. role in enabling searches to find user entries of interest.  To this
  715. end, what is typically done is to have multiple values of the common
  716. name attribute in the user's entry.  Thus the entry for
  717. J.Smith@acme.com might well have the common name attribute values
  718. "John Smith", "John Q. Smith" and "John Quincy Smith" to optimize
  719. matching of search requests.
  720.  
  721. The attribute rfc822mailbox (or mail) is normally used to hold a user's
  722. e-mail address in X.500 and LDAP directory services.  A user with
  723. multiple e-mail addresses will not be assigned multiple DNs simply
  724. because of the multiple addresses.  As described above, one of these
  725. e-mail addresses -- a machine-independent and fairly static one -- will
  726. be elected the distinguished e-mail address and used to construct the
  727. DN.  If it is desirable to make available the other e-mail addresses,
  728. they can be stored in the user's rfc822mailbox attribute.  It is
  729. technically possible, although undesirable because potentially
  730. confusing, that the rfc822mailbox attribute does NOT contain the
  731. distinguished e-mail address as one of its values.
  732.  
  733. An important matter for directory administrators to consider with
  734. respect to the use of RFC822 mailbox identifiers is that it is
  735. possible to construct more than one DN using the same mailbox
  736. identifier as the RDN. This may or may not have undesirable
  737. consequences, depending on the expectations of specific applications
  738. accessing the directory. The safest practice is probably to avoid such
  739. multiple use of the same mailbox identifier.
  740.  
  741. Another less safe alternative might be to only permit such multiple
  742. use in cases where the directory objects with the same uid as the RDN
  743. have different base object classes. This would permit applications --
  744. which would need to be aware of this nuance -- to find objects based
  745. on searches for specific uid values to distinguish between meaningful
  746. and non-meaningful directory objects.
  747.  
  748. Consider the following example. Suppose two directory objects were to
  749. be created by Acme,
  750.  
  751.     uid=ds-dsadmin@acme.com, dc=engr, dc=acme, dc=com (1)
  752.  
  753. and
  754.  
  755.     uid=ds-admin@acme.com, dc=acme, dc=com (2).
  756.  
  757. The first object represents an administrative user and is of object
  758. class organizational role. The second represents a group and
  759. represents a list of objects (expressed by the values of the member
  760. attribute) who have been granted some form of administrative
  761. permission. An application wishing to determine the group members and
  762. knowing only the uid value "ds-admin@acme.com" might experience
  763. problems if it naively expected expected the first match found under
  764. dc=acme, dc=com to contain a member attribute.
  765.  
  766. 8.2 Alternative DN Structures
  767.  
  768. Some organizations may wish to be represented by a scheme based upon a
  769. more classic X.500/NADF naming system [12].  These organizations can be
  770. accommodated in the scheme without significant problems or naming
  771. conflicts.
  772.  
  773. The approach we take should not preclude participation in a larger
  774. directory service, so names held in the stand-alone LDAP directory
  775. shouldn't collide unnecessarily with names held by other directory
  776. service operators.  (If two directory service providers hold
  777. information with respect to the same DN, these are two different views
  778. of the same real world object, not two unrelated objects that
  779. accidentally share a "name.")  Naming based on DNS meets this
  780. criterion.  Disciplined use of X.500 naming can also meet this
  781. criterion.
  782.  
  783. To enable a consistent searching strategy in a directory where objects
  784. named according to the plan described here as well as the classic
  785. X.500/NADF naming system, we strongly recommend the user ID (uid)
  786. attribute, although not part of the DN, have a valid RFC822 identifier
  787. for the user.  The LDAP DIT structure will follow the typical
  788. X.500/NADF approach as follows.
  789.  
  790. Organizations wishing to pursue this approach will need to register
  791. their organization's name with the appropriate authority as generally
  792. accepted in the X.500/NADF community. This means that US organizations
  793. will register with ANSI.  The resort to the civil naming
  794. infrastructure of states and counties should be actively
  795. discouraged. There may be cases where this sort of name construction
  796. can make sense, so no absolute prohibition is made here.  The names
  797. constructed from this civil naming infrastructure (a la NADF), while
  798. meeting the technical criteria for non-ambiguity and right to use, are
  799. typically long and unwieldy.
  800.  
  801. Suppose the US company "XYZ Widgets" expressed a wish to follow this
  802. approach.  A typical user name might be
  803.  
  804.    uid=J.User@xyzwidgets.com, o="XYZ Widgets, Inc.", c=US
  805.  
  806. where o="XYZ Widgets, Inc.", c=US is an ANSI registered name.  (The
  807. "alphanumeric string" registered with ANSI is 'XYZ Widgets, Inc.',
  808. where the single quotes mark off what is registered but are not part of
  809. the registered information.)
  810.  
  811. To support structured access control within the company, the analogous
  812. form to the registration of a subdomain in the mainline approach is the
  813. creation of an organizational unit node.
  814.  
  815. 8.3 Directory Schema Implications of the Naming Plan
  816.  
  817. The traditional directory schema(s) developed for the X.500 standard
  818. and its application to the Internet [3] require extension to be used
  819. with the naming plan developed here. The extensions described below
  820. attempt to reuse existing schema elements as much as possible. The
  821. directory objects for which extensions are required are: organization,
  822. organizational unit, ca, server (application) and group.
  823.  
  824. So as to continue to use existing structural object classes to the
  825. extent possible, we propose supplementing entries based on these
  826. classes with additional information from two new auxiliary object
  827. classes, dcObject and uidObject.
  828.  
  829. The auxiliary object class dcObject is defined as:
  830.  
  831. name: dcObject
  832. requires: dc
  833.  
  834. The auxiliary object class uidObject is defined as:
  835.  
  836. name: uidObject
  837. requires: uid
  838.  
  839. In a pure X.500 context, our schema would also require the definition
  840. of new name forms and structure rules. These concepts are not
  841. required, however, for the specification of LDAP schemas.
  842.  
  843. 8.3.1 Organization Schema
  844.  
  845. The dc attribute is employed to construct the RDN of an organization
  846. object.  This is enabled by adding the auxiliary class dcObject to the
  847. organization's objectClass attribute.
  848.  
  849. 8.3.2 Organizational Unit Schema
  850.  
  851. The dc attribute is employed to construct the RDN of an
  852. organizationalUnit object (which is subordinate in the DIT to either
  853. an organization or an organizationalUnit object).  This is enabled by
  854. adding the auxiliary class dcObject to the organizational unit's
  855. objectClass attribute.
  856.  
  857. 8.3.3 Person Schema
  858.  
  859. No schema extensions are required for person objects if either the
  860. inetOrgPerson (preferred) or the newPilotPerson object classes are
  861. used. The attribute uid is permissible in each class. For consistency,
  862. the uidObject could be added to person entry objectClass attributes
  863. to assist applications filtering on this attribute.
  864.  
  865. 8.3.4 Certification Authority Schema
  866.  
  867. The certification authority (CA) object class is an auxiliary class,
  868. meaning it is essentially a set of additional attributes for a base
  869. class such as organizationalRole, organization, organizationalUnit or
  870. person.  Except in the case where the base structural class is
  871. inetOrgPerson, use of the uid attribute to construct the RDN of a CA
  872. will require the auxiliary class uidObject to permit the uid attribute
  873. to be used. In the cases where organizationalUnit or organization is
  874. the base class for a CA, use of the auxiliary class dcObject will
  875. permit the RDN of the CA to be a domain component.
  876.  
  877. 8.3.5 Server Application Schema
  878.  
  879. Server applications are typically represented by entries of the object
  880. class applicationProcess (or a class derived from it).  Sometimes the
  881. class applicationEntity is used.  In either case, the uid attribute
  882. may be employed to construct the RDN of a server application object.
  883. This is enabled by adding the auxiliary class uidObject to the server
  884. application's objectClass attribute.
  885.  
  886. 8.3.6 Group of Names Schema
  887.  
  888. The uid attribute may be employed to construct the RDN of a groupOfNames
  889. object.  This is enabled by adding the auxiliary class uidObject to the
  890. groupOfNames' objectClass attribute.
  891.  
  892. 9.0 SECURITY CONSIDERATIONS
  893.  
  894. Security considerations are not part of this paper.
  895.  
  896. 10.0 ACKNOWLEDGMENTS
  897.  
  898. This plan has emerged in the course of a number of fruitful
  899. discussions, especially with David Chadwick, John Dale, Joe Gajewski,
  900. Mark Jackson, Ryan Moats, Tom Spencer and Chris Tzu.
  901.  
  902.  
  903. 11.0 REFERENCES
  904.  
  905. [1]     X.500: The Directory -- Overview of Concepts, Models, and
  906.         Service, CCITT Recommendation X.500, December, 1988.
  907.  
  908. [2]     P.Barker, and S. Kille, "The COSINE and Internet X.500 Schema",
  909.     RFC1274, 11/27/1991.
  910.  
  911. [3]     The North American Directory Forum, "A Naming Scheme for c=US",
  912.     RFC1255, September 1991.
  913.  
  914. [4]     W. Yeong, T. Howes, and S. Kille, "Lightweight Directory Access
  915.     Protocol", RFC1777, 03/28/1995. (Work is also underway in the
  916.     IETF to produce an extended version of LDAP.)
  917.  
  918. [5]     J. Postel, and C. Anderson, "White Pages Meeting Report",
  919.     RFC1588, February 1994.
  920.  
  921. [6]    P. Mockapetris, "Domain names - concepts and facilities",
  922.     RFC1034.
  923.  
  924. [7]    D. Crocker, "Standard for the format of ARPA Internet text
  925.     messages", RFC822.
  926.  
  927. [8]     S. Kille, "A String Representation of Distinguished Names",
  928.     RFC1779, 03/28/1995.
  929.  
  930. [9]     A. Freier, P. Karlton, and P. Kocher, "The SSL Protocol Version
  931.         3.0", Work in Progress, Internet Draft
  932.     <draft-freier-ssl-version3-01.txt>, March 1996.
  933.  
  934. [10]    S. Kille, "X.500 and Domains", RFC1279, 11/27/1991.
  935.  
  936. [11]    M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
  937.         Protocol (v3)", Work in Progress, Internet Draft
  938.         <draft-ietf-asid-ldapv3-protocol-04.txt>, February 17, 1997.
  939.  
  940. [12]    The North American Directory Forum, "NADF Standing Documents: A
  941.     Brief Overview", RFC 1417, The North American Directory Forum",
  942.     NADF, February 1993.
  943.  
  944. 12.  Authors' Addresses
  945.  
  946.        Al Grimstad
  947.        AT&T
  948.        Room 1C-429, 101 Crawfords Corner Road
  949.        Holmdel, NJ 07733-3030
  950.        USA
  951.  
  952.        EMail:  alg@att.com
  953.  
  954.        Rick Huber
  955.        AT&T
  956.        Room 1B-433, 101 Crawfords Corner Road
  957.        Holmdel, NJ 07733-3030
  958.        USA
  959.  
  960.        EMail:  rvh@att.com
  961.  
  962.        Sri Sataluri
  963.        AT&T
  964.        Room 4G-202, 101 Crawfords Corner Road
  965.        Holmdel, NJ 07733-3030
  966.        USA
  967.  
  968.        EMail:  sri@att.com
  969.  
  970.        Steve Kille
  971.        Isode Limited
  972.        The Dome, The Square
  973.        Richmond
  974.        TW9 1DT
  975.        UK
  976.  
  977.        Phone:  +44-181-332-9091
  978.        EMail:  S.Kille@isode.com
  979.  
  980.        Mark Wahl
  981.        Critical Angle Inc.
  982.        4815 W Braker Lane #502-385
  983.        Austin, TX 78759
  984.        USA
  985.  
  986.        EMail:  M.Wahl@critical-angle.com
  987.