]> git.sur5r.net Git - openldap/blob - doc/rfc/rfc1781.txt
Update 1.1alpha with latest build environment changes from -devel.
[openldap] / doc / rfc / rfc1781.txt
1
2
3
4
5
6
7 Network Working Group                                           S. Kille
8 Request for Comments: 1781                              ISODE Consortium
9 Obsoletes: 1484                                               March 1995
10 Category: Standards Track
11
12
13         Using the OSI Directory to Achieve User Friendly Naming
14
15 Status of this Memo
16
17    This document specifies an Internet standards track protocol for the
18    Internet community, and requests discussion and suggestions for
19    improvements.  Please refer to the current edition of the "Internet
20    Official Protocol Standards" (STD 1) for the standardization state
21    and status of this protocol.  Distribution of this memo is unlimited.
22
23 Abstract
24
25    The OSI Directory has user friendly naming as a goal.  A simple
26    minded usage of the directory does not achieve this.  Two aspects not
27    achieved are:
28
29     o  A user oriented notation
30
31     o  Guessability
32
33    This proposal sets out some conventions for representing names in a
34    friendly manner, and shows how this can be used to achieve really
35    friendly naming.  This then leads to a specification of a standard
36    format for representing names, and to procedures to resolve them.
37    This leads to a specification which allows directory names to be
38    communicated between humans.  The format in this specification is
39    identical to that defined in [5], and it is intended that these
40    specifications are compatible.
41
42 Table of Contents
43
44    1.   Why a notation is needed ...................................   2
45    2.   The Notation ...............................................   3
46    3.   Communicating Directory Names ..............................   7
47    4.   Matching a purported name ..................................   9
48        4.1    Environment ..........................................   9
49        4.2    Matching .............................................  10
50        4.3    Top Level ............................................  12
51        4.4    Intermediate Level ...................................  13
52        4.5    Bottom Level .........................................  14
53    5.   Examples ...................................................  14
54    6.   Support required from the standard .........................  15
55
56
57
58 Kille                                                           [Page 1]
59 \f
60 RFC 1781                  User Friendly Naming                March 1995
61
62
63    7.   Support of OSI Services ....................................  15
64    8.   Experience .................................................  16
65    9.   Relationship to other work .................................  17
66    10.  Issues .....................................................  19
67    11.  References .................................................  20
68    12.  Security Considerations ....................................  21
69    13.  Author's Address ...........................................  21
70    A.   Pseudo-code for the matching algorithm .....................  22
71    List of Figures
72        1.     Example usage of User Friendly Naming ................  18
73        2.     Matching Algorithm ...................................  22
74    List of Tables
75        1.     Local environment for private DUA ....................  10
76        2.     Local environment for US Public DUA ..................  11
77
78 1.  Why a notation is needed
79
80    Many OSI Applications make use of Distinguished Names (DN) as defined
81    in the OSI Directory [1].  The main reason for having a notation for
82    name format is to interact with a user interface.  This specification
83    is coming dangerously close to the sin of standardising interfaces.
84    However, there are aspects of presentation which it is desirable to
85    standardise.
86
87    It is important to have a common format to be able to conveniently
88    refer to names.  This might be done to represent a directory name on
89    a business card or in an email message.  There is a need for a format
90    to support human to human communication, which must be string based
91    (not ASN.1) and user oriented.
92
93    In very many cases, a user will be required to input a name.  This
94    notation is designed to allow this to happen in a uniform manner
95    across many user interfaces.  The intention is that the name can just
96    be typed in.  There should not be any need to engage in form filling
97    or complex dialogue.  It should be possible to take the "human"
98    description given at the meeting, and use it directly.  The means in
99    which this happens will become clear later.
100
101    This approach uses the syntax defined in [5] for representing
102    distinguished names.  By relaxing some of the constraints on this
103    specification, it is argued that a more user oriented specification
104    is produced.  However, this syntax cannot be mapped algorithmically
105    onto a distinguished name without the use of a directory.
106
107    This notation is targeted towards a general user oriented system, and
108    in particular to represent the names of humans.  Other syntaxes may
109    be more appropriate for other uses of the directory.  For example,
110    the OSF Syntax may be more appropriate for some system oriented uses.
111
112
113
114 Kille                                                           [Page 2]
115 \f
116 RFC 1781                  User Friendly Naming                March 1995
117
118
119    (The OSF Syntax uses "/" as a separator, and forms names in a manner
120    intended to resemble UNIX filenames).
121
122    This notation is targeted towards names which follow a particular DIT
123    structure:  organisationally oriented.  This may make it
124    inappropriate for some types of application.  There may be a
125    requirement to extend this notation to deal more cleanly with fully
126    geographical names.
127
128    This approach effectively defines a definition of descriptive names
129    on top of the primitive names defined by the OSI Directory.
130
131 2.  The Notation
132
133    The notation used in this specification is defined in [5].  This
134    notation defines an unambiguous representation of distinguished name,
135    and this specification is designed to be used in conjunction with
136    this format.  Both specifications arise from the same piece of
137    research work [4].  Some examples of the specification are given
138    here.  The author's User Friendly Name (UFN) might be written:
139
140    Steve Kille, Computer Science, University College London, GB
141
142    or
143
144    S. Kille, Computer Science, University College London, GB
145
146    This may be folded, perhaps to display in multi-column format.  For
147    example:
148
149    Steve Kille,
150    Computer Science,
151    University College London,
152    GB
153
154    Another UFN might be:
155
156    Christian Huitema, INRIA, FR
157
158    or
159    James Hacker,
160    Basingstoke,
161    Widget Inc,
162    GB
163
164    The final example shows quoting of a comma in an Organisation name:
165
166    L. Eagle, "Sue, Grabbit and Runn", GB
167
168
169
170 Kille                                                           [Page 3]
171 \f
172 RFC 1781                  User Friendly Naming                March 1995
173
174
175    A purported name is what a user supplies to an interface for
176    resolution into one or more distinguished names.  A system should
177    almost always store a name as a distinguished name.  This will be
178    more efficient, and avoid problems with purported names which become
179    ambiguous when a new name appears.  A user interface may display a
180    distinguished name, using the distinguished name notation.  However,
181    it may display a purported name in cases where this will be more
182    pleasing to the user.  Examples of this might be:
183
184    o  Omission of the higher components of the distinguished name are
185       not displayed (abbreviation).
186
187    o  Omission of attribute types, where the type is unlikely to be
188       needed to resolve ambiguity.
189
190    The ways in which a purported name may vary from a distinguished name
191    are now described:
192
193    Type Omission
194
195    There are two cases of this.
196
197      o  Schema defaulting.  In this case, although the type is not
198         present, a schema defaulting is used to deduce the type.  The
199         first two types of schema defaulting may be used to deduce a
200         distinguished name without the use of the directory.  The use
201         of schema defaulting may be useful to improve the performance
202         of UFN resolution.  The types of schema defaulting are:
203
204         --  Default Schema
205
206         --  Context Dependent Default Schema
207
208         --  Data Dependent Default Schema
209
210      o  Omission of the type to be resolved by searching.
211
212    Default Schema
213
214    The attribute type of an attribute may always be present.  This may
215    be done to emphasise the type structure of a name.  In some cases,
216    the typing may be omitted.  This is done in a way so that in many
217    common cases, no attribute types are needed.  The following type
218    hierarchy (schema) is assumed:
219
220
221
222
223
224
225
226 Kille                                                           [Page 4]
227 \f
228 RFC 1781                  User Friendly Naming                March 1995
229
230
231    Common Name, (((Organisational Unit)*,  Organisation,) Country).
232
233    Explicitly typed RDNs may be inserted into this hierarchy at any
234    point.  The least significant component is always of type Common
235    Name.  Other types follow the defined organisational hierarchy.
236    The following are equivalent:
237
238    Filestore Access, Bells, Computer Science,
239    University College London, GB
240
241    and
242
243    CN=Filestore Access, OU=Bells, OU=Computer Science,
244    O=University College London, C=GB
245
246    To interpet a distinguished name presented in this format, with some
247    or all of the attributes with the type not specified, the types are
248    derived according to the type hierarchy by the following algorithm:
249
250     1.  If the first attribute type is not specified, it is
251         CommonName.
252
253     2.  If the last attribute type is not specified, it is Country.
254
255     3.  If there is no organisation explicitly specified, the last
256         attribute with type not specified is of type Organisation.
257
258     4.  Any remaining attribute with type unspecified must be before
259         an Organisation or OrganisationalUnit attribute, and is of
260         type OrganisationalUnit.
261
262    To take a distinguished name, and generate a name of this format with
263    attribute types omitted, the following steps are followed.
264
265     1.  If the first attribute is of type CommonName, the type may be
266         omitted.
267
268     2.  If the last attribute is of type Country, the type may be
269         omitted.
270
271     3.  If the last attribute is of type Country, the last
272         Organisation attribute may have the type omitted.
273
274     4.  All attributes of type OrganisationalUnit may have the type
275         omitted, unless they are after an Organisation attribute or
276         the first attribute is of type OrganisationalUnit.
277
278
279
280
281
282 Kille                                                           [Page 5]
283 \f
284 RFC 1781                  User Friendly Naming                March 1995
285
286
287    Context Dependent Default Schema
288
289    The distinguished name notation defines a fixed schema for type
290    defaulting.  It may be useful to have different defaults in different
291    contexts.  For example, the defaulting convention may be applied in a
292    modified fashion to objects which are known not to be common name
293    objects.  This will always be followed if the least significant
294    component is explicitly typed.  In this case, the following hierarchy
295    is followed:
296
297    ((Organisational Unit)*,  Organisation,) Country
298
299    Data Dependent Defaulting
300
301    There are cases where it would be optimal
302    to default according to the data.  For example, in:
303
304    Einar Stefferud, Network Management Associates, CA, US
305
306    It would be useful to default "CA" to type State.  This might be done
307    by defaulting all two letter attributes under C=US to type State.
308
309    General Defaulting
310
311    A type may be omitted in cases where it does not follow a default
312    schema hierarchy, and then type variants can be explored by
313    searching.  Thus a distinguished name could be represented by a
314    uniquely matching purported name.  For example,
315
316    James Hacker,
317    Basingstoke,
318    Widget Inc,
319    GB
320
321    Would match the distinguished name:
322
323    CN=James Hacker,
324    L=Basingstoke,
325    O=Widget Inc,
326    C=GB
327
328    Abbreviation
329
330    Some of the more significant components of the DN will be omitted,
331    and then defaulted in some way (e.g., relative to a local context).
332    For example:
333
334    Steve Kille
335
336
337
338 Kille                                                           [Page 6]
339 \f
340 RFC 1781                  User Friendly Naming                March 1995
341
342
343    Could be interpreted in the context of an organisational default.
344
345    Local Type Keywords
346
347    Local values can be used to identify types, in addition to the
348    keywords defined in [5].  For example, "Organisation" may be
349    recognised as an alternative to "O".
350
351    Component Omission
352
353    An intermediate component of the name may be omitted.  Typically this
354    will be an organisational unit.  For example:
355
356    Steve Kille, University College London, GB
357
358    In some cases, this can be combined with abbreviation.  For example:
359
360    Steve Kille, University College London
361
362    Approximation
363
364    Approximate renditions or alternate values of one or
365    more of the components will be supplied.  For example:
366
367    Stephen Kille, CS, UCL, GB
368
369    or
370
371    Steve Keill, Comp Sci, Univarstiy College London, GB
372
373    Friendly Country
374
375    A "friendly country name" can be used instead of the ISO 3166 two
376    letter code.  For example:  UK; USA; France; Deutchland.
377
378 3.  Communicating Directory Names
379
380    A goal of this standard is to provide a means of communicating
381    directory names.  Two approaches are given, one defined in [5], and
382    the other here.  A future version of these specifications may contain
383    only one of these approaches, or recommend use of one approach.  The
384    approach can usually be distinguished implicitly, as types are
385    normally omitted in the UFN approach, and are always present in the
386    Distinguished Name approach.  No recommendation is made here, but the
387    merits of each approach is given.
388
389
390
391
392
393
394 Kille                                                           [Page 7]
395 \f
396 RFC 1781                  User Friendly Naming                March 1995
397
398
399    1.  Distinguished Name or DN. A representation of the distinguished
400        name, according to the specification of [5].
401
402    2.  User Friendly Name or UFN. A purported name, which is expected to
403        unambiguously resolve onto the distinguished name.
404
405    When a UFN is communicated, a form which should efficiently and
406    unambiguously resolve onto a distinguished name should be chosen.
407    Thus it is reasonable to omit types, or to use alternate values which
408    will unambiguously identify the entry in question (e.g., by use of an
409    alternate value of the RDN attribute type).  It is not reasonable to
410    use keys which are (or are likely to become) ambiguous.  The approach
411    used should be implicit from the context, rather than wired into the
412    syntax.  The terms "Directory Name" and "X.500 Name" should be used
413    to refer to a name which might be either a DN or UFN. An example of
414    appropriate usage of both forms is given in the Section which defines
415    the Author's location in Section 12.  Advantages of communicating the
416    DN are:
417
418     o  The Distinguished Name is an unambiguous and stable reference to
419        the user.
420
421     o  The DN will be used efficiently by the directory to obtain
422        information.
423
424    Advantages of communicating the UFN are:
425
426     o  Redundant type information can be omitted (e.g., "California",
427        rather than "State=California", where there is known to be no
428        ambiguity.
429
430     o  Alternate values can be used to identify a component.  This might
431        be used to select a value which is meaningful to the recipient, or
432        to use a shorter form of the name.  Often the uniqueness
433        requirements of registration will lead to long names, which users
434        will wish to avoid.
435
436     o  Levels of the hierarchy may be omitted.  For example in a very
437        small organisation, where a level of hierarchy has been used to
438        represent company structure, and the person has a unique name
439        within the organisation.
440
441    Where UFN form is used, it is important to specify an unambiguous
442    form.  In some ways, this is analogous to writing a postal address.
443    There are many legal ways to write it.  Care needs to be taken to
444    make the address unambiguous.
445
446
447
448
449
450 Kille                                                           [Page 8]
451 \f
452 RFC 1781                  User Friendly Naming                March 1995
453
454
455 4.  Matching a purported name
456
457    The following approach specifies a default algorithm to be used with
458    the User Friendly Naming approach.  It is appropriate to modify this
459    algorithm, and future specifications may propose alternative
460    algorithms.  Two simple algorithms are noted in passing, which may be
461    useful in some contexts:
462
463    1.  Use type omission only, but otherwise require the value of the RDN
464        attribute to be present.
465
466    2.  Require each RDN to be identified as in 1), or by an exact match
467        on an alternate value of the RDN attribute.
468
469    These algorithms do not offer the flexibility of the default
470    algorithm proposed, but give many of the benefits of the approach in
471    a very simple manner.
472
473    The major utility of the purported name is to provide the important
474    "user friendly" characteristic of guessability.  A user will supply a
475    purported name to a user interface, and this will be resolved onto a
476    distinguished name.  When a user supplies a purported name there is a
477    need to derive the DN. In most cases, it should be possible to derive
478    a single name from the purported name.  In some cases, ambiguities
479    will arise and the user will be prompted to select from a multiple
480    matches.  This should also be the case where a component of the name
481    did not "match very well".
482
483    There is an assumption that the user will simply enter the name
484    correctly.  The purported name variants are designed to make this
485    happen!  There is no need for fancy window based interfaces or form
486    filling for many applications of the directory.  Note that the fancy
487    interfaces still have a role for browsing, and for more complex
488    matching.  This type of naming is to deal with cases where
489    information on a known user is desired and keyed on the user's name.
490
491 4.1  Environment
492
493    All matches occur in the context of a local environment.  The local
494    environment defines a sequence of names of a non-leaf objects in the
495    DIT. This environment effectively defines a list of acceptable name
496    abbreviations where the DUA is employed.  The environment should be
497    controllable by the individual user.  It also defines an order in
498    which to operate.
499
500    This list is defined in the context of the number of name components
501    supplied.  This allows varying heuristics, depending on the
502    environment, to make the approach have the "right" behaviour.  In
503
504
505
506 Kille                                                           [Page 9]
507 \f
508 RFC 1781                  User Friendly Naming                March 1995
509
510
511    most cases, the environment will start at a local point in the DIT,
512    and move upwards.  Examples are given in Tables 1 and 2.  Table 1
513    shows an example for a typical local DUA, which has the following
514    characteristics:
515
516    One component
517
518    Assumed first to be a user in the department, then a user or
519    department within the university, then a national organisation, and
520    finally a country.
521
522    Two components
523
524    Most significant component is first assumed to be a national
525    organisation, then a department (this might be reversed in some
526    organisations), and finally a country.
527
528    Three or more components
529
530    The most significant component is first assumed to be a country, then
531    a national organisation, and finally a department.
532
533 4.2  Matching
534
535    A purported name will be supplied, usually with a small number of
536    components.  This will be matched in the context of an environment.
537    Where there are multiple components to be matched, these should be
538    matched sequentially.  If an unambiguous DN is determined, the match
539    continues as if the full DN had been supplied.  For example, if
540
541          +-----------+--------------------------------------+
542          |Number of  |Environment                           |
543          |Components |                                      |
544          +-----------+--------------------------------------+
545          |1          |Physics, University College London, GB|
546          |           |University College London, GB         |
547          |           |GB                                    |
548          +-----------+--------------------------------------+
549          |2          |GB                                    |
550          |           |University College London, GB         |
551          |           |--                                    |
552          +-----------+--------------------------------------+
553          |3+         |--                                    |
554          |           |GB                                    |
555          |           |University College London, GB         |
556          +-----------+--------------------------------------+
557
558              Table 1:  Local environment for private DUA
559
560
561
562 Kille                                                          [Page 10]
563 \f
564 RFC 1781                  User Friendly Naming                March 1995
565
566
567                      +------------+-----------+
568                      | Number of  |Environment|
569                      | Components |           |
570                      +------------+-----------+
571                      |  1,2       | US        |
572                      |            | CA        |
573                      |            | --        |
574                      +------------+-----------+
575                      |  3+        | --        |
576                      |            | US        |
577                      |            | CA        |
578                      +------------+-----------+
579
580             Table 2:  Local environment for US Public DUA
581
582    Stephen Kille, UCL
583
584    is being matched in the context of environment GB, first UCL is
585    resolved to the distinguished name:
586
587    University College London, GB
588
589    Then the next component of the purported name is taken to determine
590    the final name.  If there is an ambiguity (e.g., if UCL had made two
591    matches, both paths are explored to see if the ambiguity can be
592    resolved.  Eventually a set of names will be passed back to the user.
593
594    Each component of the environment is taken in turn.  If the purported
595    name has more components than the maximum depth, the environment
596    element is skipped.  The advantage of this will be seen in the
597    example given later.
598
599    A match of a name is considered to have three levels:
600
601    Exact A DN is specified exactly
602
603    Good Initially, a match should be considered good if it is
604        unambiguous, and exactly matches an attribute value in the entry.
605        For human names, a looser metric is probably desirable (e.g.,
606        S Kille should be a good match of S. Kille, S.E. Kille or Steve
607        Kille even if these are not explicit alternate values).
608
609    Poor Any other substring or approximate match
610
611    Following a match, the reference can be followed, or the user
612    prompted.  If there are multiple matches, more than one path may be
613    followed.  There is also a shift/reduce type of choice:  should any
614    partial matches be followed or should the next element of the
615
616
617
618 Kille                                                          [Page 11]
619 \f
620 RFC 1781                  User Friendly Naming                March 1995
621
622
623    environment be tried.  The following heuristics are suggested, which
624    may be modified in the light of experience.  The overall aim is to
625    resolve cleanly specified names with a minimum of fuss, but give
626    sufficient user control to prevent undue searching and delay.
627
628    1.  Always follow an exact match.
629
630    2.  Follow all good matches if there are no exact matches.
631
632    3.  If there are only poor matches, prompt the user.  If the user
633        accepts one or more matches, they can be considered as good.  If
634        all are rejected, this can be treated as no matches.
635
636    4.  Automatically move to the next element of the environment if no
637        matches are found.
638
639    When the final component is matched, a set of names will be
640    identified.  If none are identified, proceed to the next environment
641    element.  If the user rejects all of the names, processing of the
642    next environment element should be confirmed.
643
644    The exact approach to matching will depend on the level of the tree
645    at which matching is being done.  We can now consider how attributes
646    are matched at various levels of the DIT.
647
648    There is an issue of approximate matching.  Sometimes it helps, and
649    sometimes just returns many spurious matches.  When a search is
650    requested, all relevant attributes should be returned, so that
651    distinguished and non-distinguished values can be looked at.  This
652    will allow a distinction to be made between good and poor matches.
653    It is important that where, for example, an acronym exactly matches
654    an organisation, that the user is not prompted about other
655    organisations where it matches as a substring.
656
657 4.3  Top Level
658
659    In this case, a match is being done at the root of the DIT. Three
660    approaches are suggested, dependent on the length of supplied name.
661    All lead to a single level search of the top level of the DIT.
662
663    Exactly 2
664
665    This is assumed to be a 3166 two letter country code, or an exact
666    match on a friendly country or organisation (e.g., UK or UN). Do
667    exact match on country and friendly country.
668
669
670
671
672
673
674 Kille                                                          [Page 12]
675 \f
676 RFC 1781                  User Friendly Naming                March 1995
677
678
679    Greater than 2
680
681    Make an approximate and substring match on friendly country and
682    organisation.
683
684 4.4  Intermediate Level
685
686    Once the root level has been dealt with, intermediate levels will be
687    looking for organisational components (Organisation, Locality, Org
688    Unit).  In some cases, private schema control will allow the system
689    to determine which is at the next level.  In general this will not be
690    possible.  In each case, make a substring and approximate match
691    search of one level.  The choice depends on the base object used in
692    the search.
693
694    1.  If DN has no Organisation or Locality, filter on Organisation and
695        Locality.
696
697    2.  If DN has Org Unit, filter on Org Unit.
698
699    3.  If DN has Organisation, filter on Locality and Org Unit.
700
701    4.  If DN has Locality, filter on Organisation.
702
703    These allow some optimisation, based on legal choices of schema.
704    Keeping filters short is usually desirable to improve performance.  A
705    few examples of this, where a base object has been determined (either
706    by being the environment or by partial resolution of a purported
707    name), and the next element of a purported name is being considered.
708    This will generate a single level search.  What varies is the types
709    being filtered against.  If the DN is:
710
711    University College London, GB
712
713    The search should be for Org Unit or Locality.  If the DN is:
714
715    Organisation=UN
716
717    the search should be for Org Unit or Locality.
718
719    There may be some improvements with respect to very short keys.  Not
720    making approximate or substring matches in these cases seems sensible
721    (It might be desirable to allow "*" as a part of the purported name
722    notation.)
723
724
725
726
727
728
729
730 Kille                                                          [Page 13]
731 \f
732 RFC 1781                  User Friendly Naming                March 1995
733
734
735 4.5  Bottom Level
736
737    The "Bottom Level" is to deal with leaf entries in the DIT. This will
738    often be a person, but may also be a role, an application entity or
739    something else.
740
741    The last component of a purported name may either reference a leaf or
742    non-leaf.  For this reason, both should be tested for.  As a
743    heuristic, if the base object for the search has two or more
744    components it should be tested first as a bottom level name and then
745    intermediate.  Reverse this for shorter names.  This optimises for
746    the (normal) case of non-leaves high up the tree and leaves low down
747    the tree.
748
749    For bottom level names, make an approximate and substring match
750    against Common Name, Surname, and User ID. Where common name is
751    looked for, a full subtree search will be used when at the second
752    level of the DIT or lower, otherwise a single level search.
753
754    For example, if I have resolved a purported name to the distinguished
755    name
756
757    University College London, GB
758
759    and have a single component Bloggs, this will generate a subtree
760    search.
761
762 5.  Examples
763
764    This is all somewhat confusing, and a few examples are given.  These
765    are all in the context of the environment shown in Table 1 on Page
766    13.
767
768    If "Joe Bloggs" is supplied, a subtree search of
769
770    Physics, University College London, GB
771
772    will be made, and the user prompted for "Joseph Z. Bloggs" as the
773    only possible match.
774
775    If "Computer Science" is supplied, first
776
777    Physics, University College London, GB
778
779    will be searched, and the user will reject the approximate match of
780    "Colin Skin".  Then a subtree search of
781
782    University College London, GB
783
784
785
786 Kille                                                          [Page 14]
787 \f
788 RFC 1781                  User Friendly Naming                March 1995
789
790
791    will be made, looking for a person.  Then a single level search will
792    be made looking for Org Unit, and
793
794    Computer Science, University College London, GB
795
796    will be returned without prompting (exact match).  Supplying "Steve
797    Kille" will lead to a failed subtree search of
798
799    Physics, University College London, GB
800
801    and lead straight to a subtree search of
802
803    University College London, GB
804
805    This will lead to an exact value match, and so a single entry
806    returned without prompting.
807
808    If "Andrew Findlay, Brunel" is supplied, the first element of the
809    environment will be skipped, single level search of "Brunel" under
810    "GB" will find:
811
812    Brunel University, GB
813
814    and a subtree search for "Andrew Findlay" initiated.  This will yield
815
816    Andrew Findlay, Computing and Media Services, Brunel University, GB
817
818    Dr A J Findlay, Manufacturing and Engineering Systems, Brunel
819    University, GB
820
821    and the user will be prompted with a choice.
822
823    This approach shows how a simple format of this nature will "do the
824    right thing" in many cases.
825
826 6.  Support required from the standard
827
828    Fortunately, all that is needed is there!  It would be useful to have
829    "friendly country name" as a standard attribute.
830
831 7.  Support of OSI Services
832
833    The major focus of this work has been to provide a mechanism for
834    identifying Organisations and Users.  A related function is to
835    identify applications.  Where the Application is identified by an AET
836    (Application Entity Title) with an RDN of Common Name, this
837    specification leads to a natural usage.  For example, if a filestore
838    is named "gannet", then this could easily be identified by the name:
839
840
841
842 Kille                                                          [Page 15]
843 \f
844 RFC 1781                  User Friendly Naming                March 1995
845
846
847    Gannet, Computer Laboratory, Cambridge University, GB
848
849    In normal usage, this might lead to access (using a purported name)
850    of:
851
852    FTAM gannet,cambridge
853
854    A second type of access is where the user identifies an Organisation
855    (Organisational Unit), and expects to obtain a default service.  The
856    service is implied by the application, and should not require any
857    additional naming as far as the user is concerned.  It is proposed
858    that this is supported by User Friendly Naming in the following way.
859
860    1.  Determine that the purported name identifies a non-leaf object,
861        which is of object class Organisation or Organisational Unit or
862        Locality.
863
864    2.  Perform a single level search for Application Entities which
865        support the required application contexts.  This assumes that all
866        services which are supporting default access for the organisation
867        are registered at one level below (possibly by the use of
868        aliases), and that other services (specific machines or parts of
869        the organisation) are represented further down the tree.  This
870        seems to be a reasonable layout, and its utility can be evaluated
871        by experiment.
872
873 8.  Experience
874
875    An experimental implementation of this has been written by Colin
876    Robbins.  The example in Figure 1 shows that it can be very effective
877    at locating known individuals with a minimum of effort.  This code has
878    been deployed within the "FRED" interface of the PSI Pilot [9], and
879    within an prototype interface for managing distribution lists.  The
880    user reaction has been favourable:
881
882    Some issues have arisen from this experience:
883
884     o  Where there is more than one level of Organisational Unit, and the
885        user guesses one which is not immediately below the organisation,
886        the algorithm works badly.  There does not appear to be an easy
887        fix for this.  It is not clear if this is a serious deficiency.
888
889     o  Substring searching is currently done with leading and trailing
890        wildcards.  As many implementations will not implement leading
891        wildcards efficiently, it may be preferable to only use trailing
892        wildcards.  The effect of this on the algorithm needs to be
893        investigated.
894
895
896
897
898 Kille                                                          [Page 16]
899 \f
900 RFC 1781                  User Friendly Naming                March 1995
901
902
903    Implementors of this specification are encouraged to investigate
904    variants of the basic algorithm.  A final specification should depend
905    on experience with such variants.
906
907 9.  Relationship to other work
908
909    Colin Robbin's work on the interface "Tom" and implementation of a
910    distribution list interface strongly influenced this specification
911    [6].
912
913    Some of the ideas used here originally came from a UK Proposal to the
914    ISO/CCITT Directory Group on "New Name Forms" [2].  This defined, and
915    showed how to implement, four different types of names:
916
917    Typed and Ordered The current Distinguished Name is a restricted
918    example of this type of name.
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954 Kille                                                          [Page 17]
955 \f
956 RFC 1781                  User Friendly Naming                March 1995
957
958
959    -> t hales, csiro, australia
960    Found good match(es) for 'australia'
961    Found exact match(es) for 'csiro'
962    Please select from the following:
963       Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU [y/n] ? y
964    The following were matched...
965       Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU
966
967    -> g michaelson, queensland, au
968    Found exact match(es) for 'au'
969    Please select from the following:
970       University of Queensland, AU [y/n] ? y
971       Axolotl, AU [y/n] ? n
972    Please select from the following:
973       George Michaelson, Prentice Computer Centre, University of
974       Queensland, AU
975    [y/n] ? y
976       Manager, University of Queensland, AU [y/n] ? n
977    The following were matched...
978       George Michaelson, Prentice Computer Centre, University of
979       Queensland, AU
980
981    -> r needham, cambridge
982    Found good match(es) for 'cambridge'
983    Please select from the following:
984       Roger Needham, Computer Lab, Cambridge University [y/n] ? y
985    The following were matched...
986       Roger Needham, Computer Lab, Cambridge University
987
988    -> kirstein
989    Found good match(es) for 'kirstein'
990    The following were matched...
991       Peter Kirstein
992
993
994               Figure 1:  Example usage of User Friendly Naming
995
996    Untyped and Ordered
997
998    This is the type of name proposed here (with some extensions to allow
999    optional typing).  It is seen as meeting the key user requirement of
1000    disliking typed names, and is efficient to implement.
1001
1002    Typed and Unordered
1003
1004    This sort of name is proposed by others as the key basis for user
1005    friendly naming.  Neufeld shows how X.500 can be used to provide this
1006    [7], and Peterson proposes the Profile system to provide this [8].
1007
1008
1009
1010 Kille                                                          [Page 18]
1011 \f
1012 RFC 1781                  User Friendly Naming                March 1995
1013
1014
1015    The author contends that whilst typed naming is interesting for some
1016    types of searching (e.g., yellow page searching), it is less
1017    desirable for naming objects.  This is borne out by operational
1018    experience with OSI Directories [3].
1019
1020    Untyped and Unordered
1021
1022    Surprisingly this form of name can be supported quite easily.
1023    However, a considerable gain in efficiency can be achieved by
1024    requiring ordering.  In practice, users can supply this easily.
1025    Therefore, this type of name is not proposed.
1026
1027 10.  Issues
1028
1029    The following issues are noted, which would need to be resolved
1030    before this document is progressed as an Internet Standard.
1031
1032    Potential Ambiguity
1033
1034    Whilst the intention of the notation is to allow for specification of
1035    alternate values, it inherently allows for ambiguous names to be
1036    specified.  It needs to be demonstrated that problems of this
1037    characteristic are outweighed by other benefits of the notation.
1038
1039    Utility
1040
1041    Determine that the specification is being implemented and used.
1042
1043    Performance
1044
1045    Measurements on the performance implications of using this approach
1046    should be made.
1047
1048    Alogrithm
1049
1050    The utility of the algorithm, and possible variants, should be
1051    investigated.
1052
1053    This format, and the procedures for resolving purported names, should
1054    be evolved to an Internet Standard.  The syntax can be expected to be
1055    stable.  In light of experience, the algorithm for resolving
1056    purported names may be changed.
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066 Kille                                                          [Page 19]
1067 \f
1068 RFC 1781                  User Friendly Naming                March 1995
1069
1070
1071 11.  References
1072
1073    [1] The Directory --- overview of concepts, models and services,
1074        1993. CCITT X.500 Series Recommendations.
1075
1076    [2] S.E. Kille. New name forms, May 1989.  ISO/IEC/JTC 21/ WG4/N797
1077        UK National Body Contribution to the Oslo Directory Meeting.
1078
1079    [3] S.E. Kille. The THORN large scale pilot exercise.  Computer
1080        Networks and ISDN Systems, 16(1):143--145, January 1989.
1081
1082    [4] S.E. Kille. Using the OSI directory to achieve user friendly
1083        naming. Research Note RN/20/29, Department of Computer Science,
1084        University College London, February 1990.
1085
1086    [5] Kille, S., "A String Representation of Distinguished Names", RFC
1087        1779, ISODE Consortium, March 1995.
1088
1089    [6] S.E. Kille and C.J. Robbins. The ISO development environment:
1090        User's manual (version 7.0), July 1991. Volume 5:  QUIPU.
1091
1092    [7] G.W. Neufeld. Descriptive names in X.500.  In SIGCOMM 89
1093        Symposiun Communications Architectures and Protocols, pages 64--
1094        71, September 1989.
1095
1096    [8] L.L. Petersen. The profile naming service.  ACM Transactions on
1097        Computing Systems, 6(4):341--364, November 1988.
1098
1099    [9] M.T. Rose. Realizing the White Pages using the OSI Directory
1100        Service. Technical Report 90--05--10--1, Performance Systems
1101        International, Inc., May 1990.
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122 Kille                                                          [Page 20]
1123 \f
1124 RFC 1781                  User Friendly Naming                March 1995
1125
1126
1127 12.  Security Considerations
1128
1129    Security issues are not discussed in this memo.
1130
1131 13.  Author's Address
1132
1133    Steve Kille
1134    ISODE Consortium
1135    The Dome
1136    The Square
1137    Richmond, Surrey
1138    TW9 1DT
1139    England
1140
1141    Phone:+44-181-332-9091
1142    EMail:  S.Kille@ISODE.COM
1143
1144    DN: CN=Steve Kille,
1145    O=ISODE Consortium, C=GB
1146
1147    UFN: S. Kille,
1148    ISODE Consortium, GB
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178 Kille                                                          [Page 21]
1179 \f
1180 RFC 1781                  User Friendly Naming                March 1995
1181
1182
1183 A.  Pseudo-code for the matching algorithm
1184
1185    The following pseudo-code is intended to clarify the matching
1186    algorithm.  The language uses ASN.1 data types, with flow control
1187    "C"-like, but with keywords upper-cased.
1188
1189 PurportedName ::= SEQUENCE OF String
1190                 -- simplication, as attribute types can optionally be
1191                 -- specified
1192
1193                 -- Each element of the Purported Name is a string
1194                 -- which has been parsed from the BNF
1195
1196 Attribute ::= SEQUENCE {
1197         type OBJECT IDENTIFIER,
1198         value ANY }
1199
1200 RDN ::= Attribute -- simplification, as can be multi-value
1201
1202 DN ::= SEQUENCE OF RDN
1203
1204 Environment ::= SEQUENCE OF DN
1205
1206 EnvironmentList ::= SEQUENCE OF SEQUENCE {
1207                         lower-bound INTEGER,
1208                         upper-bound INTEGER,
1209                         environment Environment }
1210
1211
1212 friendlyMatch(p:  PurportedName; el:  EnvironmentList):    SET OF DN
1213 {
1214                                 -- Find correct environment
1215
1216         IF length(el) == 0 THEN return(NULL);
1217
1218         IF length(p) <= head(el).upper-bound
1219                         && length(p) >= head(el).lower-bound THEN
1220                 return envMatch (p, head(el).environment);
1221         ELSE
1222                 return(friendlyMatch(p, tail(el));
1223 }
1224
1225 envMatch(p:  PurportedName; e:  Environment):    SET OF DN
1226 {
1227                                 -- Check elements of environment
1228                                 -- in the defined order
1229
1230         matches:  SET OF DN;
1231
1232
1233
1234 Kille                                                          [Page 22]
1235 \f
1236 RFC 1781                  User Friendly Naming                March 1995
1237
1238
1239         IF length(e) == 0 THEN return(NULL);
1240
1241         matches = purportedMatch(head(e).DN, p)
1242         IF matches != NULL THEN
1243                 return(matches);
1244         ELSE
1245                 return(envMatch(p, tail(e));
1246 }
1247
1248
1249 purportedMatch(base:  DN; p:  PurportedName):  SET OF DN
1250 {
1251         s:  String = head(p);
1252         matches:  SET OF DN = NULL;
1253
1254         IF length(p) == 1 THEN
1255                 IF length(base) == 0 THEN
1256                         IF (matches = rootSearch(s)) != NULL THEN
1257                                 return(matches);
1258                         ELSE return(leafSearch(base, s, one-level);
1259                 ELSE IF length(base) == 1 THEN
1260                         IF (matches = intSearch(base, s)) != NULL THEN
1261                                 return(matches);
1262                         ELSE return(leafSearch(base, s, one-level);
1263                 ELSE
1264                         IF (matches = leafSearch(base, s, subtree)) !=
1265                                 NULL THEN return(matches);
1266                         ELSE return(intsearch(base, s);
1267
1268
1269         IF length(base) == 0 THEN
1270                 FOR x IN rootSearch(s) DO
1271                         matches += (purportedMatch(x, tail(p));
1272         ELSE
1273                 FOR x IN intSearch(base, s) DO
1274                         matches += (purportedMatch(x, tail(p));
1275         return(matches);
1276 }
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290 Kille                                                          [Page 23]
1291 \f
1292 RFC 1781                  User Friendly Naming                March 1995
1293
1294
1295 -- General.    Might need to tighten the filter for short strings,
1296 -- in order to stop being flooded.    Alternatively, this could be
1297 -- done if the loose search hits a size limit
1298
1299 rootSearch(s:  String):  SET OF DN
1300 {
1301         IF length(s) == 2 THEN
1302                 return(search(NULL, one-level, s, {CountryName,
1303                         FriendlyCountryName, OrganizationName},
1304                         {exact}, {Country, Organisation}));
1305                         -- test exact match only
1306                         -- probably a country code
1307         ELSE
1308                 return(search(NULL, one-level, s, {OrganizationName,
1309                         FriendlyCountryName}, {substring, approx},
1310                         {Country, Organisation}));
1311 }
1312
1313
1314 intSearch( base:  DN; s:  String)
1315 {
1316         IF present(base, OrgUnitName) THEN
1317                 return(search(base, one-level, s, {OrgUnitName},
1318                         {substring, approx}, {OrgUnit}));
1319         ELSE IF present(base, OrganisationName) THEN
1320                 return(search(base, one-level, s, {OrgUnitName,
1321                         LocalityName}, {substring, approx},
1322                         {Organization, OrgUnit, Locality}));
1323         ELSE IF present(base, LocalityName) THEN
1324                 return(search(base, one-level, s, {OrganisationName},
1325                         {substring, approx}, {Locality});
1326         ELSE
1327                 return(search(base, one-level, s, {OrganisationName,
1328                         LocalityName}, {substring, approx},
1329                         {Organisation, Locality}));
1330 }
1331
1332
1333 present(d:  DN; t:  AttributeType):  BOOLEAN
1334 {
1335         FOR x IN d DO
1336                 IF x.type == t THEN return(TRUE);
1337         return(FALSE);
1338 }
1339
1340 SearchScope := ENUMERATED (base-object, one-level, subtree)
1341
1342 leafSearch(base:  DN; s:  String; search-scope:  SearchScope)
1343
1344
1345
1346 Kille                                                          [Page 24]
1347 \f
1348 RFC 1781                  User Friendly Naming                March 1995
1349
1350
1351 {
1352         return(search(base, search-scope, s, {CommonName, Surname,
1353                 UserId}, {substring, approx}));
1354 }
1355
1356 search(base:  DN; search-scope:  SearchScope; s:  string;
1357         alist SET OF AttributeType; matchtypes SET OF MatchType
1358         objectClasses SET OF ObjectClass OPTIONAL): SET OF DN
1359 {
1360         -- mapped onto Directory Search, with OR conjunction
1361         -- of filter items
1362
1363         return dNSelect (s, search-results, alist);
1364 }
1365
1366 read(base:  DN; alist SET OF AttributeType):  SET OF Attribute;
1367 {
1368         -- mapped onto Directory Read
1369         -- Types repeated to deal with multiple values
1370         -- This would be implemented by returning selected info
1371         -- with the search operation
1372 }
1373
1374 dNSelect(s:  String; dlist SET OF DN;
1375                      alist:  SET OF AttributeType):16SET0OF DN
1376 {
1377         exact, good:  SET OF DN;
1378
1379         FOR x IN dlist DO
1380                 IF last(DN).Value == s THEN
1381                         exact += x;
1382                 ELSE IF FOR y IN read(x, alist) DO
1383                         IF y.value == s THEN
1384                                 good += x;
1385
1386         IF exact != NULL THEN return(exact);
1387         IF good != NULL THEN return(good);
1388         return(userQuery(dlist));
1389 }
1390
1391 userQuery(dlist SET OF DN): SET OF DN
1392 {
1393         -- pass back up for manual checking
1394         -- user can strip all matches to force progres....
1395 }
1396
1397 head()    -- return first element of list
1398 tail()    -- return list with first element removed
1399
1400
1401
1402 Kille                                                          [Page 25]
1403 \f
1404 RFC 1781                  User Friendly Naming                March 1995
1405
1406
1407 length()  -- return size of list
1408 last()    -- return last element of list
1409
1410                     Figure 2: Matching Algorithm
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458 Kille                                                          [Page 26]
1459 \f