Annotation of 43BSDReno/contrib/isode-beta/doc/ufn/ufn.tex, revision 1.1.1.1

1.1       root        1: %\documentstyle [11pt,ucl-rn-pic,tgrind,a4] {article}
                      2: \documentstyle [11pt,ucl-rn,tgrind] {article}
                      3: \author {S.E. Kille}
                      4: \date {June 1990}
                      5: \rnnumber{RN/90/29}
                      6: \title {Using the OSI Directory to achieve \\  User Friendly Naming}
                      7: \begin {document}
                      8: \maketitle
                      9: \begin {abstract}
                     10: The OSI Directory has user friendly naming as a goal.  A simple minded usage
                     11: of the directory does not achieve this.  Two aspects not achieved are:
                     12: 
                     13: \begin{itemize}
                     14: \item A user oriented notation
                     15: \item Guessability
                     16: \end{itemize}
                     17: 
                     18: This proposal sets out some conventions for representing names in a friendly
                     19: manner, and shows how this can be used to achieve really friendly naming.
                     20: \end {abstract}
                     21: 
                     22: \tableofcontents
                     23: \listoffigures
                     24: \listoftables
                     25: \pagebreak
                     26: 
                     27: \section {Why a notation is needed}
                     28: 
                     29: Many OSI Applications make use of Distinguished Names (DN) as defined in the
                     30: OSI Directory \cite{CCITT.Directory}.
                     31: The main reason for having a notation for
                     32: is for interacting with a user
                     33: interface.  This proposal is coming dangerously close to the sin of
                     34: standardising interfaces.  However, there are aspects of presentation which
                     35: it is desirable to standardise.
                     36: 
                     37: In very many cases, a user will be required to
                     38: input a name.  This notation is designed to allow this to happen in a
                     39: uniform manner across many user interfaces.    The intention is that
                     40: the name can just be typed in.  There should not be any need to engage in
                     41: form filling or complex dialogue.
                     42: 
                     43: A secondary goal, is to have a common
                     44: format to be able to unambiguously refer to names.
                     45: This notation should {\em not} be needed to write on business cards or in
                     46: the minutes of meetings.  If this is the case, the directory has failed to a
                     47: large extent.  It should be possible to take the ``human'' description given
                     48: at the meeting, and use it directly.  The means in which this happens will
                     49: become clear later.  In practice, it will often be useful to explicitly write
                     50: down directory names, even though it is not strictly needed.
                     51: 
                     52: \section {A notation for Distinguished Name}
                     53: 
                     54: \subsection {Goals}
                     55: 
                     56: The following goals are laid out:
                     57: 
                     58: \begin {itemize}
                     59: \item  It should be intuitive for the majority of names encountered
                     60: \item It should be fully general
                     61: \item It should be possible to lay it out in a number of ways
                     62: \end {itemize}
                     63: 
                     64: \subsection {Informal definition}
                     65: 
                     66: This notation is designed to be convenient for common forms of name.
                     67: Some examples are given. 
                     68: My directory (distinguished) name would be written:
                     69: 
                     70: \begin{verbatim}
                     71: Steve Kille, Computer Science, University College London, GB  
                     72: \end{verbatim}
                     73: 
                     74: This may be folded, perhaps to display in multi-column format.
                     75: For example:
                     76: 
                     77: \begin {verbatim}
                     78: Steve Kille, 
                     79: Computer Science, 
                     80: University College London, 
                     81: GB  
                     82: \end{verbatim}
                     83: 
                     84: or 
                     85: 
                     86: \begin {verbatim}
                     87: Steve Kille 
                     88: Computer Science 
                     89: University College London, GB  
                     90: \end{verbatim}
                     91: 
                     92: Another name might be:
                     93: 
                     94: 
                     95: \begin {verbatim}
                     96: Christian Huitema, INRIA, FR
                     97: \end{verbatim}
                     98: 
                     99: An example, showing how different attribute types are handled:
                    100: 
                    101: 
                    102: \begin {verbatim}
                    103: James Hacker 
                    104: locality=Basingstoke 
                    105: Widget Inc 
                    106: GB 
                    107: \end{verbatim}
                    108: 
                    109: An example showing quoting of a comma in an Organisation name:
                    110: 
                    111: \begin {verbatim}
                    112: L. Eagle, "Sue, Grabbit and Runn", GB
                    113: \end{verbatim}
                    114: 
                    115: 
                    116: \subsection {Formal definition}
                    117: 
                    118: 
                    119: The structure is specified in a BNF grammar in Figure~\ref{BNF}.
                    120: 
                    121: \begin{figure}
                    122: \begin {verbatim}
                    123: <name> ::= <name-component>
                    124:        | <name-component> <spaced-separator> <name>
                    125: 
                    126: <spaced-separator> ::= <optional-space>  
                    127:                 <separator>
                    128:                 <optional-space>
                    129: 
                    130: <separator> ::= "," ( <CR> )
                    131:               | <CR> 
                    132: 
                    133: <optional-space> ::= *( " " ) 
                    134: 
                    135: <name-component> ::= <attribute> 
                    136:         | <attribute> <optional-space> "+" ( <CR> ) 
                    137:           <optional-space> <name-component>
                    138: 
                    139: <attribute> ::= <string>
                    140:         | <key> <optional-space> "=" <optional-space> <string>
                    141: 
                    142: <key> ::= 1*( <keychar> )
                    143: <keychar> ::= letters, numbers, and space
                    144: 
                    145: <string> ::= *( <stringchar> | <pair> )
                    146:          | '"' *( <stringchar> | "," | "+" | "=" | <CR> ) '"'
                    147:          
                    148: <special> ::= "," | "=" | '"' | <CR> | "\" | "+"
                    149: <pair> ::= "\" <special> 
                    150: <stringchar> ::= any char except <special>
                    151: 
                    152: \end{verbatim}
                    153: \caption {BNF Grammar for Distinguished and Purported Name}
                    154: \label {BNF}
                    155: \end{figure}
                    156: 
                    157: 
                    158: The quoting mechanism is used for the following cases:
                    159: 
                    160: \begin {itemize}
                    161: \item Strings containing ``,'', ``+'', ``=''or ``\verb|"|''  or \verb|<CR>|
                    162: \item Strings with leading or trailing spaces
                    163: \item Strings containing consecutive spaces
                    164: \end {itemize}
                    165: 
                    166: A list of valid keywords for well known attribute types used in naming is
                    167: given in Table~\ref{keywords}.  This is a list of keywords which must be
                    168: supported.  These are chosen because they appear in common forms of name,
                    169: and can do so in a place which does not correspond to the default schema
                    170: used.
                    171: If other attributes are used for naming, this can always be
                    172: extended locally.
                    173: 
                    174: \begin{table}
                    175: \begin{center}
                    176: \begin {tabular}{l l}
                    177: Key & Attribute (X.520 keys) \\
                    178: \hline
                    179: Locality & LocalityName \\
                    180: Area & LocalityName \\
                    181: Organisation & OrganizationName \\
                    182: Organization & OrganizationName \\
                    183: \end {tabular}
                    184: \end{center}
                    185: \caption {Standardised Keywords}
                    186: \label {keywords}
                    187: \end{table}
                    188: 
                    189: 
                    190: Only string type attributes are
                    191: considered, but other attribute syntaxes could be supported locally.
                    192: It is assumed that the interface will translate from the supplied string
                    193: into PrintableString or T.61.
                    194: 
                    195: The \verb|"+"| notation is used to specify multi-component RDNs.  In this
                    196: case, the types for attributes in the RDN must be explicit.
                    197: 
                    198: The name is presented/input in a little-endian order.  If no type are given,
                    199: a type hierarchy (schema) is assumed as:
                    200: 
                    201: \begin {verbatim}
                    202: Common Name, (((Organisational Unit)*,  Organisation,) Country)
                    203: \end{verbatim}
                    204: 
                    205: Explicitly typed RDNs may be inserted into this hierarchy.  Two types of
                    206: object are named.  They are distinguished by context in the application:
                    207: 
                    208: \begin{description}
                    209: \item[Common Name Object] Typically a leaf object and a person.  In this
                    210: case, the LHS RDN is assumed to be common name, and other RDNs follow the
                    211: hierarchy.
                    212: 
                    213: \item[Other Object] Typically a non-leaf object.  
                    214: \end{description}
                    215: 
                    216: 
                    217: \section {Purported names}
                    218: 
                    219: 
                    220: A purported name is what a user supplies to an interface for resolution
                    221: into  one or more distinguished names.
                    222: The same
                    223: notation is used as for distinguished name.  
                    224: A purported name may differ from a distinguished name in a number of ways
                    225: which are itemised below.
                    226: 
                    227: Typically, an
                    228: interface will display a distinguished name, using the distinguished name
                    229: notation.  However, it may display a purported name, as this will be more
                    230: pleasing to the user.  The most common example of this is where the higher
                    231: components of the distinguished name are not displayed (abbreviation).
                    232: 
                    233: The ways in which a purported name may vary from a distinguished name are
                    234: now described:
                    235: 
                    236: \begin {description}
                    237: \item[Abbreviation] Some of the more significant components of the DN will
                    238: be omitted, and then defaulted in some way (e.g., relative to a local
                    239: context).  For example:
                    240: 
                    241: \begin {verbatim}
                    242: Steve Kille
                    243: \end{verbatim}
                    244: 
                    245: \item[Component Omission]
                    246: An intermediate component of the name may be omitted.  Typically this will
                    247: be an organisational unit.   For example:
                    248: 
                    249: \begin {verbatim}
                    250: Steve Kille, University College London, GB
                    251: \end{verbatim}
                    252: 
                    253: 
                    254: In some cases, this can be combined with abbreviation.  For example:
                    255: 
                    256: \begin {verbatim}
                    257: Steve Kille, University College London
                    258: \end{verbatim}
                    259: 
                    260: \item[Approximation] Approximate renditions or alternate values
                    261: of one or more of the components
                    262: will be supplied. For example:
                    263: 
                    264: \begin {verbatim}
                    265: Stephen Kille, CS, UCL, GB   
                    266: \end{verbatim}
                    267: 
                    268: or
                    269: 
                    270: \begin{verbatim}
                    271: Steve Keill, Comp Sci, Univarstiy College London, GB
                    272: \end{verbatim}
                    273: 
                    274: 
                    275: \item[Friendly Country] A ``friendly country name'' can be used instead of
                    276: the ISO 3166 two letter code.  For example: UK; USA; France; Deutchland.  
                    277: 
                    278: \item[Type Changing] A type may be omitted, even where it does not follow
                    279: the hierarchy.   Type variants can be explored.
                    280: The previous distinguished name:
                    281: \begin {verbatim}
                    282: James Hacker 
                    283: locality=Basingstoke 
                    284: Widget Inc 
                    285: GB 
                    286: \end{verbatim}
                    287: 
                    288: Could be represented by the purported name:
                    289: 
                    290: \begin {verbatim}
                    291: James Hacker 
                    292: Basingstoke 
                    293: Widget Inc 
                    294: GB 
                    295: \end{verbatim}
                    296: 
                    297: 
                    298: \end {description}
                    299: 
                    300: 
                    301: \section {Matching a purported name}
                    302: 
                    303: The major utility of the purported name is to provide the important ``user
                    304: friendly'' characteristic of guessability.  A user will supply a purported
                    305: name to a user interface, and this will be resolved onto a distinguished
                    306: name.   
                    307: When a user supplies a purported name there is a need to derive the DN.  In
                    308: most cases, it should be possible to derive a single name from the purported
                    309: name.  In some cases, ambiguities will arise and the user will be prompted
                    310: to select from a multiple matches.  This should also be the case where a
                    311: component of the name did not ``match very well''.   
                    312: 
                    313: There is an assumption that the user will simply enter the name correctly.
                    314: The purported name variants are designed to make this happen!  There is no
                    315: need for fancy window based interfaces or form filling for many applications
                    316: of the directory.  Note that the fancy interfaces still have a role for
                    317: browsing, and for more complex matching.  This type of naming is to deal
                    318: with cases where information on a known user is desired and keyed on the
                    319: user's name.
                    320: 
                    321: \subsection {Environment}
                    322: 
                    323: 
                    324: 
                    325: 
                    326: All matches occur in the context of a local environment.
                    327: The local environment defines a 
                    328: sequence of name of a non-leaf objects in the DIT.   
                    329: This environment effectively defines a list of acceptable name abbreviations
                    330: where the DUA is employed.   It also defines an order in which to operate.
                    331: 
                    332: 
                    333: This list is defined in the context of the number of name components
                    334: supplied.  This allows varying heuristics, depending on the environment, to
                    335: make the approach have the ``right'' behaviour.
                    336: 
                    337: 
                    338: In most cases, the environment will start at a local point in the DIT, and
                    339: move upwards.   Examples are given in Tables~\ref{e1} and~\ref{e2}.
                    340: Table~\ref{e1} shows an example for a typical local DUA, which has the
                    341: following characteristics:
                    342: 
                    343: \begin{description}
                    344: \item[One component] Assumed first to be a user in the department, then a
                    345: user or department within the university, the a national organisation, and
                    346: finally a country.
                    347: \item[Two components] Most significant component is first assumed to be a
                    348: national organisation, then a department (this might be reversed in some
                    349: organisations), and finally a country.
                    350: \item[Three or more components] The most significant component is first
                    351: assumed to be a country, then a national organisation, and finally a
                    352: department. 
                    353: \end{description}
                    354: 
                    355: 
                    356: 
                    357: \begin{table}
                    358: \begin{center}
                    359: \begin{tabular}{l l}
                    360: Number of & Environment \\
                    361: Components & \\
                    362: \hline
                    363: 1 & Physics, University College London, GB  \\
                    364: & University College London, GB \\
                    365: & GB  \\
                    366: & -- \\
                    367: \hline
                    368: 2 & GB  \\
                    369: & University College London, GB \\
                    370: & -- \\
                    371: \hline
                    372: 3+  & -- \\
                    373: & GB  \\
                    374: & University College London, GB \\
                    375: 
                    376: \end{tabular}
                    377: \end{center}
                    378: \caption {Local environment for private DUA}
                    379: \label{e1}
                    380: \end{table}
                    381: 
                    382: \begin{table}
                    383: \begin{center}
                    384: \begin{tabular}{l l}
                    385: Number of & Environment \\
                    386: Components & \\
                    387: \hline
                    388: 1,2  & US  \\
                    389: & CS \\
                    390: & -- \\
                    391: \hline
                    392: 3+ & -- \\
                    393: & US \\
                    394: & CA \\
                    395: \end{tabular}
                    396: \end{center}
                    397: \caption {Local environment for US Public DUA}
                    398: \label{e2}
                    399: \end{table}
                    400: 
                    401: 
                    402: \subsection {Matching}
                    403: 
                    404: 
                    405: A purported name will be supplied, usually with a small number of components.
                    406: This will be matched in the context of an environment.
                    407: 
                    408: Where there are multiple components to be matched, these should be matched
                    409: sequentially.  If an unambiguous DN is determined, the match continues as if
                    410: the full DN had been supplied.  
                    411: For example if 
                    412: 
                    413: \begin{quote}
                    414: \begin{verbatim}
                    415: Stephen Kille, UCL
                    416: \end{verbatim}
                    417: \end{quote}
                    418: 
                    419: is being matched in the context of environment \verb|GB|, first \verb|UCL|
                    420: is resolved to the distinguished name:
                    421: 
                    422: \begin{quote}
                    423: \begin{verbatim}
                    424: University College London, GB
                    425: \end{verbatim}
                    426: \end{quote}
                    427: 
                    428: Then the next component of the purported name is taken to determine the
                    429: final name. 
                    430: If there is an ambiguity (e.g., if \verb|UCL| had made two matches,
                    431: both paths are explored to see if the ambiguity can
                    432: be resolved.  Eventually a set of names will be passed back to the user.
                    433: 
                    434: 
                    435: Each component of the environment is taken in turn.
                    436: If the purported name has more
                    437: components than the maximum depth, the environment element is skipped.  
                    438: The advantage of this will be seen in the example given later.
                    439: 
                    440: 
                    441: 
                    442: 
                    443: 
                    444: 
                    445: A match of a name is considered to have three levels:
                    446: 
                    447: \begin{description}
                    448: \item[Exact]  A DN is specified exactly
                    449: \item[Good]
                    450: Initially, a match should be considered good if
                    451: it is unambiguous, and exactly matches an attribute value in the entry.
                    452: For human names, a looser metric is probably desirable (e.g., \verb|S Kille|
                    453: should be a good match of \verb|S. Kille|, \verb|S.E. Kille| or \verb|Steve
                    454: Kille| even if these are not explicit alternate values).
                    455: \item[Poor] Any other substring or approximate match
                    456: \end{description}
                    457: 
                    458: Following a match, the reference can be followed, or the user prompted.
                    459: If there are multiple matches, more than one path may be followed.
                    460: There is also a shift/reduce type of choice: should any partial matches be
                    461: followed or should the next element of the environment be tried.
                    462: The following heuristics are suggested, which may be modified in the light
                    463: of experience.  The overall aim is to resolve cleanly specified names with a
                    464: minimum of fuss, but give sufficient user control to prevent undue searching
                    465: and delay.   
                    466: 
                    467: \begin{enumerate}
                    468: \item Always follow an exact match. 
                    469: \item Follow all good matches if there are no exact matches.
                    470: \item If there are only poor matches, prompt the user.  If the user accepts
                    471: one or more match, they can be considered as good.  If all are rejected,
                    472: this can be treated as no matches.
                    473: \item Automatically move to the next element of the environment if no
                    474: matches are found.   
                    475: \end{enumerate}
                    476: 
                    477: When the final component is matched, a set of names will be identified.
                    478: If none are identified, proceed to the next environment element.
                    479: If the user rejects all of the names, processing of the next environment
                    480: element should be confirmed.
                    481: 
                    482: The exact approach to matching will depend on the level of the tree at which
                    483: matching is being done.  
                    484: We can now consider how attributes are matched at various levels of the DIT.
                    485: 
                    486: 
                    487: There is an issue of approximate matching.  Sometimes it helps, and
                    488: sometimes just returns many spurious matches.  When a search is requested,
                    489: all relevant attributes should be returned, so that distinguished and
                    490: non-distinguished values can be looked at.  This will allow a distinction to
                    491: be made between good and poor matches.  It is important that where, for
                    492: example, an acronym exactly matches an organisation, that the user is not
                    493: prompted about other organisations where it matches as a substring.
                    494: 
                    495: \subsection {Top Level}
                    496: 
                    497: In this case, a match is being done at the root of the DIT.   
                    498: Three approaches are suggested, dependent on the length of supplied name.
                    499: All lead to a single level search of the top level of the DIT. 
                    500: 
                    501: \begin{description}
                    502: \item[Exactly 2] This is assumed to be a 3166 two letter country code, or an exact
                    503: match on a friendly country or organisation (e.g., UK or UN).  
                    504: Do exact match on country and friendly country.
                    505: \item[Greater than 2] Make 
                    506: an approximate and substring match on friendly country and organisation.
                    507: 
                    508: \end{description}
                    509: 
                    510: 
                    511: 
                    512: 
                    513: 
                    514: 
                    515: \subsection {Intermediate Level}
                    516: 
                    517: Once the root level has been dealt with, intermediate levels will be looking
                    518: for organisational components (Organisation, Locality, Org Unit). 
                    519: In some cases, private schema control will allow the system to determine
                    520: which is at the next level.  In general this will not be possible.
                    521: In each case, make  a substring  and approximate match search of one level.
                    522: The choice depends on the base object used in the search.
                    523: 
                    524: \begin {enumerate}
                    525: \item If DN has no Organisation or Locality, filter on Organisation and
                    526: Locality. 
                    527: \item If DN has Org Unit, filter on Org Unit.
                    528: \item If DN has Organisation, filter on Locality and Org Unit.
                    529: \item If DN has Locality, filter on Organisation.
                    530: \end {enumerate}
                    531: 
                    532: These allow some optimisation, based on legal choices of schema.  Keeping
                    533: filters short is usually desirable to improve performance.   
                    534: 
                    535: A few examples of this, where a base object has been determined (either by
                    536: being the environment or by partial resolution of a purported name), and the
                    537: next element of a purported name is being considered.  This will generate a
                    538: single level search.  What varies is the types being filtered against.
                    539: If the DN is:
                    540: 
                    541: \begin{verbatim}
                    542: University College London, GB
                    543: \end{verbatim}
                    544: 
                    545: The search should be for Org Unit or Locality.  If the DN is:
                    546: 
                    547: \begin{verbatim}
                    548: Organisation=UN
                    549: \end{verbatim}
                    550: 
                    551: the search should be for Org Unit or Locality.
                    552: 
                    553: There may be some improvements with respect to very short keys.  Not making
                    554: approximate or substring matches in these cases seems sensible\footnote{It
                    555: might be desirable to allow ``\verb|*|'' as a part of the purported name
                    556: notation}.
                    557: 
                    558: \subsection {Bottom level}
                    559: 
                    560: The ``Bottom Level'' is to deal with leaf entries in the DIT.  This will
                    561: often be a person, but may also be a role, an application entity or
                    562: something else.  
                    563: 
                    564: The last component of a purported name may either reference a leaf or
                    565: non-leaf.  For this reason, {\em both} should be tested for.
                    566: As a heuristic, if the base object for the search  has two or more
                    567: components it should be tested first as a bottom level name and then
                    568: intermediate.  Reverse this for shorter names.  This optimises for the
                    569: (normal) case
                    570: of non-leaves high up the tree and leaves low down the tree.
                    571: 
                    572: For bottom level names, make an
                    573: approximate and substring match against Common Name, Surname, and User ID.
                    574: Where common name is looked for, 
                    575: A full subtree search will be used when at
                    576: the second level of the DIT or lower, otherwise a single level search.
                    577: 
                    578: For example, if I have resolved a purported name to the distinguished name
                    579: 
                    580: \begin{verbatim}
                    581: University College London, GB
                    582: \end{verbatim}
                    583: 
                    584: and have a single component \verb|Bloggs|, this will generate a subtree
                    585: search.
                    586: 
                    587: \section{Examples}
                    588: 
                    589: 
                    590: This is all somewhat confusing, and a few examples are given.  These are all
                    591: in the context of the environment shown in Table~\ref{e1} on
                    592: Page~\pageref{e1}.
                    593: 
                    594: If ``Joe Bloggs'' is supplied, a subtree search of 
                    595: 
                    596: \begin{verbatim}
                    597: Physics, University College London, GB
                    598: \end{verbatim}
                    599: 
                    600: will be made, and the user prompted for ``Joseph Z. Bloggs'' as the only
                    601: possible match.
                    602: 
                    603: If ``Computer Science'' is supplied, first 
                    604: 
                    605: \begin{verbatim}
                    606: Physics, University College London, GB
                    607: \end{verbatim}
                    608: 
                    609: will be searched, and the user will reject the approximate match of ``Colin
                    610: Skin''.   Then a subtree search of
                    611: 
                    612: \begin{verbatim}
                    613: University College London, GB
                    614: \end{verbatim}
                    615: 
                    616: will be made, looking for a person.  Then a single level search will be made
                    617: looking for Org Unit, and 
                    618: 
                    619: \begin{verbatim}
                    620: Computer Science, University College London, GB
                    621: \end{verbatim}
                    622: 
                    623: will be returned without prompting (exact match).   
                    624: 
                    625: 
                    626: Supplying ``Steve Kille'' will lead to a failed subtree search of 
                    627: 
                    628: \begin{verbatim}
                    629: Physics, University College London, GB
                    630: \end{verbatim}
                    631: 
                    632: and lead straight to a subtree search of
                    633: 
                    634: \begin{verbatim}
                    635: University College London, GB
                    636: \end{verbatim}
                    637: 
                    638: This will lead to an exact value match, and so a single entry returned
                    639: without prompting.
                    640: 
                    641: 
                    642: If ``Andrew Findlay, Brunel'' is supplied, the first element of the
                    643: environment will be skipped, single level search of ``Brunel'' under ``GB'
                    644: will find:
                    645: 
                    646: \begin{verbatim}
                    647: Brunel University, GB
                    648: \end{verbatim}
                    649: 
                    650: and a subtree search for ``A Findlay'' initiated.   This will yield
                    651: 
                    652: \begin{verbatim}
                    653: Andrew Findlay, Computing and Media Services, Brunel University, GB
                    654: 
                    655: Dr A J Findlay, Manufacturing and Engineering Systems, 
                    656: Brunel University, GB
                    657: \end{verbatim}
                    658: 
                    659: 
                    660: and the user will be prompted with a choice.
                    661: 
                    662: 
                    663: This approach shows how a simple format of this nature will ``do the right
                    664: thing'' in many cases.   
                    665: 
                    666: \section {Support required from the standard}
                    667: 
                    668: Fortunately, all that is needed is there!  It would be useful to have
                    669: ``friendly country name'' as a standard attribute.
                    670: 
                    671: 
                    672: \section{Support of OSI Services}
                    673: 
                    674: The major focus of this work has been to provide a mechanism for identifying
                    675: Organisations and Users.   A related function is to identify applications.
                    676: Where the Application is identified by an AET (Application Entity Title)
                    677: with an RDN of Common Name, this proposal leads to a natural usage.
                    678: For example, if a filestore in named ``gannet'', then this could easily be
                    679: identified by the name:
                    680: 
                    681: \begin{verbatim}
                    682: Gannet, Computer Laboratory, Cambridge University, GB   
                    683: \end{verbatim}
                    684: 
                    685: In normal usage, this might lead to access (using a purported name) of:
                    686: 
                    687: \begin{verbatim}
                    688: FTAM gannet,cambridge
                    689: \end{verbatim}
                    690: 
                    691: A second type of access is where the user identifies an Organisation
                    692: (Organisational Unit), and expects to obtain a default service.   
                    693: The service is implied by the application, and should not require any
                    694: additional naming as far as the user is concerned.  It is proposed that this
                    695: is supported by User Friendly Naming in the following way.  
                    696: 
                    697: \begin{enumerate}
                    698: \item Determine that the purported name identifies a non-leaf object, which is
                    699: of object class Organisation or Organistaional Unit or Locality.
                    700: 
                    701: \item Perform a {\em single level} search for Application Entities which
                    702: support the required application contexts.  This assumes that all services
                    703: which are supporting default access for the organisation are registred at
                    704: one level below (possibly by the use of aliaes), and that other services
                    705: (specific machines or parts of the organisation) are represented further
                    706: down the tree.  This seems to be a reasonable layout, and its utility can be
                    707: evaluated by experiment.
                    708: 
                    709: \end{enumerate}
                    710: 
                    711: \section {Experience}
                    712: 
                    713: An experimental implementation of this has been written by Colin Robbins.
                    714: The example in Figure~\ref{usage} shows that it can be very effective at
                    715: locating known individuals with a minimum of effort.
                    716: 
                    717: \begin{figure}
                    718: \begin{small}
                    719: \begin{verbatim}
                    720: -> t hales, csiro, australia
                    721: Found good match(es) for 'australia'
                    722: Found exact match(es) for 'csiro'
                    723: Please select from the following:
                    724:    Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU [y/n] ? y
                    725: The following were matched...
                    726:    Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU
                    727: 
                    728: -> g michaelson, queensland, au
                    729: Found exact match(es) for 'au'
                    730: Please select from the following:
                    731:    University of Queensland, AU [y/n] ? y
                    732:    Axolotl, AU [y/n] ? n
                    733: Please select from the following:
                    734:    George Michaelson, Prentice Computer Centre, University of Queensland, AU
                    735: [y/n] ? y
                    736:    Manager, University of Queensland, AU [y/n] ? n
                    737: The following were matched...
                    738:    George Michaelson, Prentice Computer Centre, University of Queensland, AU
                    739: 
                    740: -> r needham, cambridge
                    741: Found good match(es) for 'cambridge'
                    742: Please select from the following:
                    743:    Roger Needham, Computer Lab, Cambridge University [y/n] ? y
                    744: The following were matched...
                    745:    Roger Needham, Computer Lab, Cambridge University
                    746: 
                    747: -> kirstein
                    748: Found good match(es) for 'kirstein'
                    749: The following were matched...
                    750:    Peter Kirstein
                    751: 
                    752: 
                    753: \end{verbatim}
                    754: \end{small}
                    755: \caption {Example usage of User Friendly Naming}
                    756: \label{usage}
                    757: \end{figure}
                    758: 
                    759: 
                    760: \section {Relationship to other work}
                    761: 
                    762: Colin Robbin's work on the interface ``Tom'' and implementation of a
                    763: distribution list interface strongly influenced this proposal.
                    764: 
                    765: Some of the ideas used here originally came from a UK Proposal to the
                    766: ISO/CCITT Directory Group on ``New Name Forms'' \cite{NNF}.  This defined,
                    767: and showed how to implement, four different types of names:
                    768: 
                    769: \begin{description}
                    770: \item[Typed and Ordered] The current Distinguished Name is a restricted
                    771: example of this type of name.
                    772: 
                    773: \item[Untyped and Ordered] This is the type of name proposed here (with some
                    774: extensions to allow optional typing).  It is seen as meeting the key user
                    775: requirement of disliking typed names, and is efficient to implement.
                    776: 
                    777: \item[Typed and Unordered] This sort of name is proposed by others as the
                    778: key basis for user friendly naming.  Neufeld shows how X.500 can be used to
                    779: provide this \cite{Neufeld.Descr}, and Peterson proposes the Profile system
                    780: to provide this \cite{Profile.2}.  The author contends that whilst typed
                    781: naming is interesting for some types of searching (e.g., yellow page
                    782: searching), it is less desirable for
                    783: naming objects.  This is born out by operational experience with OSI
                    784: Directories \cite{THORN.RARE.LSPX}.
                    785: 
                    786: \item[Untyped and Unordered] Surprisingly this form of name can be supported
                    787: quite easily.  However, a considerably gain in efficiency can be achieved by
                    788: requiring ordering.  In practice, users can supply this easily.  Therefore,
                    789: this type of name is not proposed.   
                    790: \end{description}
                    791: 
                    792: 
                    793: \section {Proposal}
                    794: 
                    795: This approach should be tested out experimentally, with the QUIPU
                    796: implementation.  This will involve:
                    797: 
                    798: \begin{itemize}
                    799: \item An interface to generate strings in this form from DNs, with control over
                    800: \begin{itemize}
                    801: \item Folding (line, column, or max width)
                    802: \item Presence of commas at EOL
                    803: \item A DN to be abbreviated against
                    804: \end{itemize}
                    805: 
                    806: \item A routine to resolve a purported name in the context of an environment.
                    807: \end{itemize}
                    808: 
                    809: The Distribution List interface seems to be an ideal system to experiment
                    810: with.
                    811: 
                    812: A specification should then be progressed, and made widely available.
                    813: Perhaps as a RARE Document or RFC.
                    814: 
                    815: \bibliographystyle{alpha}
                    816: \bibliography{../../bib/sek}
                    817: 
                    818: \pagebreak
                    819: \appendix
                    820: 
                    821: \section{Pseudo-code for the matching algorithm}
                    822: 
                    823: The following pseudo-code is intended to clarify the matching algorithm.
                    824: The language uses ASN.1 data types, with flow control `C'-like, but with
                    825: keywords upper--cased.
                    826: 
                    827: \tagrindfile{algo}{Matching Algorithm}{algo}
                    828: 
                    829: 
                    830: 
                    831: \end {document}
                    832: 

unix.superglobalmegacorp.com

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