xref: /netbsd-src/external/bsd/openldap/dist/doc/rfc/rfc2926.txt (revision 2de962bd804263c16657f586aa00f1704045df8e)
1*2de962bdSlukem
2*2de962bdSlukem
3*2de962bdSlukem
4*2de962bdSlukem
5*2de962bdSlukem
6*2de962bdSlukem
7*2de962bdSlukemNetwork Working Group                                           J. Kempf
8*2de962bdSlukemRequest for Comments: 2926                        Sun Microsystems, Inc.
9*2de962bdSlukemCategory: Informational                                         R. Moats
10*2de962bdSlukem                                                            Coreon, Inc.
11*2de962bdSlukem                                                           P. St. Pierre
12*2de962bdSlukem                                                  Sun Microsystems, Inc.
13*2de962bdSlukem                                                          September 2000
14*2de962bdSlukem
15*2de962bdSlukem
16*2de962bdSlukem          Conversion of LDAP Schemas to and from SLP Templates
17*2de962bdSlukem
18*2de962bdSlukemStatus of this Memo
19*2de962bdSlukem
20*2de962bdSlukem   This memo provides information for the Internet community.  It does
21*2de962bdSlukem   not specify an Internet standard of any kind.  Distribution of this
22*2de962bdSlukem   memo is unlimited.
23*2de962bdSlukem
24*2de962bdSlukemCopyright Notice
25*2de962bdSlukem
26*2de962bdSlukem   Copyright (C) The Internet Society (2000).  All Rights Reserved.
27*2de962bdSlukem
28*2de962bdSlukemAbstract
29*2de962bdSlukem
30*2de962bdSlukem   This document describes a procedure for mapping between Service
31*2de962bdSlukem   Location Protocol (SLP) service advertisements and lightweight
32*2de962bdSlukem   directory access protocol (LDAP) descriptions of services.  The
33*2de962bdSlukem   document covers two aspects of the mapping.  One aspect is mapping
34*2de962bdSlukem   between SLP service type templates and LDAP directory schema.
35*2de962bdSlukem   Because the SLP service type template grammar is relatively simple,
36*2de962bdSlukem   mapping from service type templates to LDAP types is straightforward.
37*2de962bdSlukem   Mapping in the other direction is straightforward if the attributes
38*2de962bdSlukem   are restricted to use just a few of the syntaxes defined in RFC 2252.
39*2de962bdSlukem   If arbitrary ASN.1 types occur in the schema, then the mapping is
40*2de962bdSlukem   more complex and may even be impossible.  The second aspect is
41*2de962bdSlukem   representation of service information in an LDAP directory.  The
42*2de962bdSlukem   recommended representation simplifies interoperability with SLP by
43*2de962bdSlukem   allowing SLP directory agents to backend into LDAP directory servers.
44*2de962bdSlukem   The resulting system allows service advertisements to propagate
45*2de962bdSlukem   easily between SLP and LDAP.
46*2de962bdSlukem
47*2de962bdSlukem
48*2de962bdSlukem
49*2de962bdSlukem
50*2de962bdSlukem
51*2de962bdSlukem
52*2de962bdSlukem
53*2de962bdSlukem
54*2de962bdSlukem
55*2de962bdSlukem
56*2de962bdSlukem
57*2de962bdSlukem
58*2de962bdSlukemKempf, et al.                Informational                      [Page 1]
59*2de962bdSlukem
60*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
61*2de962bdSlukem
62*2de962bdSlukem
63*2de962bdSlukemTable of Contents
64*2de962bdSlukem
65*2de962bdSlukem   1.0 Introduction ................................................  2
66*2de962bdSlukem   2.0 Mapping SLP Templates to LDAP Schema ........................  3
67*2de962bdSlukem     2.1 Mapping from SLP Attribute Types to LDAP Attribute Types ..  8
68*2de962bdSlukem       2.1.1 Integer ...............................................  8
69*2de962bdSlukem       2.1.2 String ................................................  8
70*2de962bdSlukem       2.1.3 Boolean ...............................................  9
71*2de962bdSlukem       2.1.4 Opaque ................................................  9
72*2de962bdSlukem     2.2 Keyword Attributes ........................................  9
73*2de962bdSlukem     2.3 Template Flags ............................................  9
74*2de962bdSlukem       2.3.1 Multi-valued ..........................................  9
75*2de962bdSlukem       2.3.2 Optional .............................................. 10
76*2de962bdSlukem       2.3.3 Literal ............................................... 10
77*2de962bdSlukem       2.3.4 Explicit Matching ..................................... 10
78*2de962bdSlukem     2.4 Default and Allowed Value Lists ........................... 10
79*2de962bdSlukem     2.5 Descriptive Text .......................................... 11
80*2de962bdSlukem     2.6 Generating LDAP Attribute OIDs ............................ 11
81*2de962bdSlukem     2.7 Example ................................................... 11
82*2de962bdSlukem   3.0 Attribute Name Conflicts .................................... 15
83*2de962bdSlukem   4.0 Mapping from Schema to Templates ............................ 15
84*2de962bdSlukem     4.1 Mapping LDAP Attribute Types to SLP Attribute Types ....... 16
85*2de962bdSlukem     4.2 Mapping ASN.1 Types to SLP Types .......................... 17
86*2de962bdSlukem       4.2.1 Integer ............................................... 18
87*2de962bdSlukem       4.2.2 Boolean ............................................... 18
88*2de962bdSlukem       4.2.3 Enumerated ............................................ 18
89*2de962bdSlukem       4.2.4 Object Identifier ..................................... 19
90*2de962bdSlukem       4.2.5 Octet String .......................................... 19
91*2de962bdSlukem       4.2.6 Real .................................................. 19
92*2de962bdSlukem     4.3 Example ASN.1 Schema ...................................... 19
93*2de962bdSlukem   5.0 Representing SLP Service Advertisements in an LDAP DIT ...... 22
94*2de962bdSlukem   6.0 Internationalization Considerations ......................... 24
95*2de962bdSlukem   7.0 Security Considerations ..................................... 24
96*2de962bdSlukem   8.0 References .................................................. 25
97*2de962bdSlukem   9.0 Authors' Addresses .......................................... 26
98*2de962bdSlukem   10.0 Full Copyright Statement ................................... 27
99*2de962bdSlukem
100*2de962bdSlukem1.0 Introduction
101*2de962bdSlukem
102*2de962bdSlukem   SLP templates [1] are intended to create a simple encoding of the
103*2de962bdSlukem   syntactic and semantic conventions for individual service types,
104*2de962bdSlukem   their attributes, and conventions.  They can easily be generated,
105*2de962bdSlukem   transmitted, read by humans and parsed by programs, as it is a string
106*2de962bdSlukem   based syntax with required comments.  Directory schemas serve to
107*2de962bdSlukem   formalize directory entry structures for use with LDAP [2] These
108*2de962bdSlukem   directories serve to store information about many types of entities.
109*2de962bdSlukem   Network services are an example of one such entity.
110*2de962bdSlukem
111*2de962bdSlukem
112*2de962bdSlukem
113*2de962bdSlukem
114*2de962bdSlukemKempf, et al.                Informational                      [Page 2]
115*2de962bdSlukem
116*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
117*2de962bdSlukem
118*2de962bdSlukem
119*2de962bdSlukem   Interoperability between SLP and LDAP is important so clients using
120*2de962bdSlukem   one protocol derive benefit from services registered through the
121*2de962bdSlukem   other. In addition, LDAP directory servers can serve as the backend
122*2de962bdSlukem   for SLP directory agents (DAs) if interoperability is possible In
123*2de962bdSlukem   order to facilitate interoperability, this document creates mappings
124*2de962bdSlukem   between the SLP template grammar and LDAP directory schema, and
125*2de962bdSlukem   establishes some conventions for representing service advertisements
126*2de962bdSlukem   in LDAP directories. The goal of the translation is to allow SLPv2
127*2de962bdSlukem   queries (which are syntactically and semantically equivalent to
128*2de962bdSlukem   LDAPv3 string queries [7]) to be submitted to an LDAP directory
129*2de962bdSlukem   server by an SLP DA backended into LDAP without extensive processing
130*2de962bdSlukem   by the DA.
131*2de962bdSlukem
132*2de962bdSlukem   The simple notation and syntactic/semantic attribute capabilities of
133*2de962bdSlukem   SLP templates map easily into directory schemas, and are easily
134*2de962bdSlukem   converted into directory schemas, even by automated means.  The
135*2de962bdSlukem   reverse may not be true. If the LDAP schema contains attributes with
136*2de962bdSlukem   unrecognized or complex syntaxes, the translation may be difficult or
137*2de962bdSlukem   impossible.  If, however, the LDAP schema only uses a few of the
138*2de962bdSlukem   common syntaxes defined in RFC 2252 [8], then the translation is more
139*2de962bdSlukem   straightforward. In addition, to foster complete bidirectionality,
140*2de962bdSlukem   the mapping must follow a very specific representation in its DESC
141*2de962bdSlukem   attributes.
142*2de962bdSlukem
143*2de962bdSlukem   This document outlines the correct mappings for SLP templates into
144*2de962bdSlukem   the syntactic representation specified for LDAP directory schema by
145*2de962bdSlukem   RFC 2252 [8]. This syntax is a subset of the ASN.1/BER described in
146*2de962bdSlukem   the X.209 specification [9], and is used by the LDAPv3 [2] directory
147*2de962bdSlukem   schema.  Likewise, rules and guidelines are proposed to facilitate
148*2de962bdSlukem   consistent mapping of ASN.1 based schemas to be translated in the SLP
149*2de962bdSlukem   template grammar. Finally, a proposal for a representation of service
150*2de962bdSlukem   advertisements in LDAP directory services is made that facilitates
151*2de962bdSlukem   SLP interoperability.
152*2de962bdSlukem
153*2de962bdSlukem   Except when used as elements in the definition of LDAP schemas, the
154*2de962bdSlukem   key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
155*2de962bdSlukem   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
156*2de962bdSlukem   document are to be interpreted as described in RFC 2119 [16].
157*2de962bdSlukem
158*2de962bdSlukem2.0 Mapping SLP Templates to LDAP Schema
159*2de962bdSlukem
160*2de962bdSlukem   We define the following abstract object class as the parent class for
161*2de962bdSlukem   all services.  Any specific service type is a subclass of this, with
162*2de962bdSlukem   its own attributes:
163*2de962bdSlukem
164*2de962bdSlukem
165*2de962bdSlukem
166*2de962bdSlukem
167*2de962bdSlukem
168*2de962bdSlukem
169*2de962bdSlukem
170*2de962bdSlukemKempf, et al.                Informational                      [Page 3]
171*2de962bdSlukem
172*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
173*2de962bdSlukem
174*2de962bdSlukem
175*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.2.1
176*2de962bdSlukem        NAME 'slpService'
177*2de962bdSlukem        DESC 'parent superclass for SLP services'
178*2de962bdSlukem        ABSTRACT
179*2de962bdSlukem        SUP top
180*2de962bdSlukem        MUST  ( template-major-version-number $
181*2de962bdSlukem                template-minor-version-number $
182*2de962bdSlukem                description $
183*2de962bdSlukem                template-url-syntax $
184*2de962bdSlukem                service-advert-service-type $
185*2de962bdSlukem                service-advert-scopes )
186*2de962bdSlukem        MAY   ( service-advert-url-authenticator $
187*2de962bdSlukem                service-advert-attribute-authenticator ) )
188*2de962bdSlukem
189*2de962bdSlukem   The attributes correspond to various parts of the SLP service
190*2de962bdSlukem   template and SLP service advertisement.
191*2de962bdSlukem
192*2de962bdSlukem   SLP service type templates begin with four definitions that set the
193*2de962bdSlukem   context of the template:
194*2de962bdSlukem
195*2de962bdSlukem      template-type - This defines the service type of the template. The
196*2de962bdSlukem      service type can be a simple service type, like "service:ftp", an
197*2de962bdSlukem      abstract service type, like "service:printer" or a concrete
198*2de962bdSlukem      service type, like "service:printer:lpr". The type name can
199*2de962bdSlukem      additionally include a naming authority, for example
200*2de962bdSlukem      "service:printer.sun:local".  The name that appears in this field
201*2de962bdSlukem      omits the "service:" prefix.
202*2de962bdSlukem
203*2de962bdSlukem      template-version - A string containing a major and minor version
204*2de962bdSlukem      number, separated by a period.
205*2de962bdSlukem
206*2de962bdSlukem      template-description - A block of human readable text describing
207*2de962bdSlukem      what the service type does.
208*2de962bdSlukem
209*2de962bdSlukem      template-url-syntax - An ABNF [6] grammar describing the service
210*2de962bdSlukem      type specific part of the service URL.
211*2de962bdSlukem
212*2de962bdSlukem   The SLP template-type definition is used as the name of the LDAP
213*2de962bdSlukem   object class for the template, a subclass of the "slpService" class,
214*2de962bdSlukem   together with the "service" prefix to indicate that the name is for a
215*2de962bdSlukem   service. In the translating service type name, colons and the period
216*2de962bdSlukem   separating the naming authority are converted into hyphens. If the
217*2de962bdSlukem   template defines an SLP concrete type, the concrete type name is
218*2de962bdSlukem   used; the abstract type name is never used.  For example, the
219*2de962bdSlukem   template for "service:printer:lpr" is translated into an LDAP object
220*2de962bdSlukem   class called "service-printer-lpr". Furthermore, if the type name
221*2de962bdSlukem   contains a naming authority, the naming authority name must be
222*2de962bdSlukem
223*2de962bdSlukem
224*2de962bdSlukem
225*2de962bdSlukem
226*2de962bdSlukemKempf, et al.                Informational                      [Page 4]
227*2de962bdSlukem
228*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
229*2de962bdSlukem
230*2de962bdSlukem
231*2de962bdSlukem   included. For example, the service type name
232*2de962bdSlukem   "service:printer.sun:local" becomes "service-printer-sun-local".  The
233*2de962bdSlukem   LDAP object class is always "STRUCTURAL".
234*2de962bdSlukem
235*2de962bdSlukem   The template-version definition is partitioned into two attributes,
236*2de962bdSlukem   template-major-version-number and template-minor-version-number. The
237*2de962bdSlukem   LDAP definition for these attributes is:
238*2de962bdSlukem
239*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.1
240*2de962bdSlukem        NAME 'template-major-version-number'
241*2de962bdSlukem        DESC 'The major version number of the service type template'
242*2de962bdSlukem        EQUALITY integerMatch
243*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
244*2de962bdSlukem        SINGLE-VALUE
245*2de962bdSlukem      )
246*2de962bdSlukem
247*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.2
248*2de962bdSlukem        NAME 'template-minor-version-number'
249*2de962bdSlukem        DESC 'The minor version number of the service type template'
250*2de962bdSlukem        EQUALITY integerMatch
251*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
252*2de962bdSlukem        SINGLE-VALUE
253*2de962bdSlukem      )
254*2de962bdSlukem
255*2de962bdSlukem   The template-url-syntax definition in the SLP template is described
256*2de962bdSlukem   by the following attribute:
257*2de962bdSlukem
258*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.3
259*2de962bdSlukem        NAME 'template-url-syntax'
260*2de962bdSlukem        DESC 'An ABNF grammar describing the service type
261*2de962bdSlukem              specific part of the service URL'
262*2de962bdSlukem        EQUALITY caseExactIA5Match
263*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
264*2de962bdSlukem        SINGLE-VALUE
265*2de962bdSlukem      )
266*2de962bdSlukem
267*2de962bdSlukem   The template-description attribute is translated into the X.520
268*2de962bdSlukem   standard attribute "description" [3].
269*2de962bdSlukem
270*2de962bdSlukem   We further establish the convention that SLP template characteristics
271*2de962bdSlukem   that can't be translated into LDAP are inserted into the DESC field
272*2de962bdSlukem   of the object class definition. The items are separated by empty
273*2de962bdSlukem   lines (consisting of two "LINE FEED" characters), are preceded by a
274*2de962bdSlukem   LINE FEED character, and are tagged at the  beginning of the line to
275*2de962bdSlukem   indicate what they represent.   This allows the template to be
276*2de962bdSlukem   reconstructed from the schema by properly parsing the comments.
277*2de962bdSlukem
278*2de962bdSlukem
279*2de962bdSlukem
280*2de962bdSlukem
281*2de962bdSlukem
282*2de962bdSlukemKempf, et al.                Informational                      [Page 5]
283*2de962bdSlukem
284*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
285*2de962bdSlukem
286*2de962bdSlukem
287*2de962bdSlukem   The bulk of an SLP template consists of attribute definitions.  There
288*2de962bdSlukem   are four items in an SLP template attribute definition that need to
289*2de962bdSlukem   be mapped into LDAP:
290*2de962bdSlukem
291*2de962bdSlukem      Attribute Name - Since SLPv2 attribute names are defined to be
292*2de962bdSlukem      compatible with LDAPv3, SLP attributes map directly into LDAP
293*2de962bdSlukem      attributes with no change. Similarly, LDAP attributes map directly
294*2de962bdSlukem      to SLP attributes.
295*2de962bdSlukem
296*2de962bdSlukem      Attribute Type - The SLP attribute type is mapped into the LDAP
297*2de962bdSlukem      attribute type.
298*2de962bdSlukem
299*2de962bdSlukem      Attribute Flags - The SLP attribute flags are mapped into
300*2de962bdSlukem      characteristics of the LDAP attribute definition, or into the DESC
301*2de962bdSlukem      field if no equivalent LDAP attribute definition characteristic
302*2de962bdSlukem      occurs.
303*2de962bdSlukem
304*2de962bdSlukem      Default and Allowed Values - These must be handled by the client
305*2de962bdSlukem      or a DA enabled to handle templates, as in SLP. For reference,
306*2de962bdSlukem      however, they should be included in the DESC field of the LDAP
307*2de962bdSlukem      attribute definition.
308*2de962bdSlukem
309*2de962bdSlukem      Descriptive Text - The SLP template descriptive text should be
310*2de962bdSlukem      mapped into the DESC field.
311*2de962bdSlukem
312*2de962bdSlukem   We discuss mapping of types, flags, default and allowed values, and
313*2de962bdSlukem   descriptive text in the subsections below.
314*2de962bdSlukem
315*2de962bdSlukem   OIDs for SLP template conversion schema elements are standardized
316*2de962bdSlukem   under the enterprise number of SrvLoc.Org (6252) [18].
317*2de962bdSlukem
318*2de962bdSlukem   For purposes of representing an SLP entry, we also define two
319*2de962bdSlukem   standardized LDAP syntaxes and attributes with standardized OIDs.
320*2de962bdSlukem
321*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.2.2
322*2de962bdSlukem        DESC 'SLP Service Type'
323*2de962bdSlukem      )
324*2de962bdSlukem
325*2de962bdSlukem   Defines the syntax for the service type name. The syntax is defined
326*2de962bdSlukem   in the BNF for the service URL in RFC 2609 Section 2.1 [1].
327*2de962bdSlukem
328*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.2.3
329*2de962bdSlukem        DESC 'SLP Scope'
330*2de962bdSlukem      )
331*2de962bdSlukem
332*2de962bdSlukem   Defines the syntax for the scope name. The syntax is defined in the
333*2de962bdSlukem   BNF for scope names in RFC 2608 Section 6.4.1 [5].
334*2de962bdSlukem
335*2de962bdSlukem
336*2de962bdSlukem
337*2de962bdSlukem
338*2de962bdSlukemKempf, et al.                Informational                      [Page 6]
339*2de962bdSlukem
340*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
341*2de962bdSlukem
342*2de962bdSlukem
343*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.4
344*2de962bdSlukem        NAME 'service-advert-service-type'
345*2de962bdSlukem        DESC 'The service type of the service advertisement, including
346*2de962bdSlukem              the "service:" prefix.'
347*2de962bdSlukem        EQUALITY caseExactIA5Match
348*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.2
349*2de962bdSlukem        SINGLE-VALUE
350*2de962bdSlukem      )
351*2de962bdSlukem
352*2de962bdSlukem   Defines an attribute for the service type name.
353*2de962bdSlukem
354*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.5
355*2de962bdSlukem        NAME 'service-advert-scopes'
356*2de962bdSlukem        DESC 'A list of scopes for a service advertisement.'
357*2de962bdSlukem        EQUALITY caseExactIA5Match
358*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
359*2de962bdSlukem      )
360*2de962bdSlukem
361*2de962bdSlukem   Defines a multivalued attribute for the scopes.
362*2de962bdSlukem
363*2de962bdSlukem   Searches for abstract types can be made with an LDAP query that
364*2de962bdSlukem   wildcards the concrete type. For example, a search for all service
365*2de962bdSlukem   advertisements of the printer abstract type can be made with the
366*2de962bdSlukem   following query:
367*2de962bdSlukem
368*2de962bdSlukem         (service-advert-service-type=service:printer:*)
369*2de962bdSlukem
370*2de962bdSlukem   SLP specifies that service URLs and attribute lists can be
371*2de962bdSlukem   accompanied by a structured authenticator consisting of a digital
372*2de962bdSlukem   signature and information necessary to verify the signature.  A
373*2de962bdSlukem   syntax and two standardized SLP attributes are defined for this
374*2de962bdSlukem   purpose:
375*2de962bdSlukem
376*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.2.3 DESC 'SLP Authenticator')
377*2de962bdSlukem
378*2de962bdSlukem      The syntax of an SLP authenticator is the bytes of the
379*2de962bdSlukem      authenticator in network byte order, see RFC 2608, Section 9.2
380*2de962bdSlukem      [5].
381*2de962bdSlukem
382*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.6
383*2de962bdSlukem        NAME 'service-advert-url-authenticator'
384*2de962bdSlukem        DESC 'The authenticator for the URL, null if none.'
385*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
386*2de962bdSlukem        SINGLE-VALUE
387*2de962bdSlukem      )
388*2de962bdSlukem
389*2de962bdSlukem      This attribute contains the SLP URL authenticator, as defined in
390*2de962bdSlukem      RFC 2608, Section 9.2 [5].
391*2de962bdSlukem
392*2de962bdSlukem
393*2de962bdSlukem
394*2de962bdSlukemKempf, et al.                Informational                      [Page 7]
395*2de962bdSlukem
396*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
397*2de962bdSlukem
398*2de962bdSlukem
399*2de962bdSlukem      ( 1.3.6.1.4.1.6252.2.27.6.1.7
400*2de962bdSlukem        NAME 'service-advert-attribute-authenticator'
401*2de962bdSlukem        DESC 'The authenticator for the attribute list, null if none.'
402*2de962bdSlukem        SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
403*2de962bdSlukem        SINGLE_VALUE
404*2de962bdSlukem      )
405*2de962bdSlukem
406*2de962bdSlukem      This attribute contains the SLP attribute authenticator, as
407*2de962bdSlukem      defined in RFC 2608, Section 9.2 [5].
408*2de962bdSlukem
409*2de962bdSlukem2.1 Mapping from SLP Attribute Types to LDAP Attribute Types
410*2de962bdSlukem
411*2de962bdSlukem   We define the mapping from SLP attribute types to LDAP as follows:
412*2de962bdSlukem
413*2de962bdSlukem      SLP Type    ASN.1 Type               LDAP Type
414*2de962bdSlukem      ---------------------------------------------------
415*2de962bdSlukem       Integer     INTEGER              INTEGER
416*2de962bdSlukem       String      DirectoryString      Directory String
417*2de962bdSlukem       Boolean     BOOLEAN              Boolean
418*2de962bdSlukem       Opaque      OCTET STRING         Octet String
419*2de962bdSlukem       Keyword     (N/A)                IA5 String
420*2de962bdSlukem
421*2de962bdSlukem   The following subsections discuss further details of the mapping.
422*2de962bdSlukem
423*2de962bdSlukem2.1.1 Integer
424*2de962bdSlukem
425*2de962bdSlukem   SLP integers compare as integers when performing a query.  LDAP
426*2de962bdSlukem   integers behave similarly.  Consequently, the mapping from the SLP
427*2de962bdSlukem   integer type to LDAP is INTEGER, with the integerMatch matching rule.
428*2de962bdSlukem
429*2de962bdSlukem2.1.2 String
430*2de962bdSlukem
431*2de962bdSlukem   SLP strings are encoded as described in the SLP protocol
432*2de962bdSlukem   specification [5].  All value strings are considered case insensitive
433*2de962bdSlukem   for matching operations.  SLP strings are not null terminated and are
434*2de962bdSlukem   encoded in UTF-8.
435*2de962bdSlukem
436*2de962bdSlukem   SLP strings are mapped to the LDAP Directory String type. The
437*2de962bdSlukem   Directory String type exactly matches the SLP string type, i.e. it is
438*2de962bdSlukem   a non-null terminated UTF-8 string. The caseIgnoreMatch equality
439*2de962bdSlukem   rule, caseIgnoreOrderingMatch ordering rule, and
440*2de962bdSlukem   caseIgnoreSubstringsMatch substring rule are used for comparing
441*2de962bdSlukem   string attribute values.
442*2de962bdSlukem
443*2de962bdSlukem
444*2de962bdSlukem
445*2de962bdSlukem
446*2de962bdSlukem
447*2de962bdSlukem
448*2de962bdSlukem
449*2de962bdSlukem
450*2de962bdSlukemKempf, et al.                Informational                      [Page 8]
451*2de962bdSlukem
452*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
453*2de962bdSlukem
454*2de962bdSlukem
455*2de962bdSlukem2.1.3 Boolean
456*2de962bdSlukem
457*2de962bdSlukem   Boolean attributes may have one of two possible values.  In SLP,
458*2de962bdSlukem   these values are represented as strings, TRUE and FALSE.  In SLP's
459*2de962bdSlukem   string encoding of a boolean value, case does not matter.
460*2de962bdSlukem
461*2de962bdSlukem   The SLP Boolean type maps directly into an LDAP BOOLEAN. The
462*2de962bdSlukem   caseIgnoreMatch rule is used for equality matching.
463*2de962bdSlukem
464*2de962bdSlukem2.1.4 Opaque
465*2de962bdSlukem
466*2de962bdSlukem   SLP attribute values of type Opaque are represented as OCTET STRING
467*2de962bdSlukem   in LDAP, and the octetStringMatch matching rule is used to compare
468*2de962bdSlukem   them.
469*2de962bdSlukem
470*2de962bdSlukem2.2 Keyword Attributes
471*2de962bdSlukem
472*2de962bdSlukem   SLP service type templates allow the definition of keyword
473*2de962bdSlukem   attributes.  Keyword attributes are attributes whose only
474*2de962bdSlukem   characteristic is their presence. Keyword attributes have no flag
475*2de962bdSlukem   information, nor any default or allowed values (since, by definition,
476*2de962bdSlukem   they have no values).
477*2de962bdSlukem
478*2de962bdSlukem   ASN.1 has no concept of keyword attributes. Keyword attributes are
479*2de962bdSlukem   translated into a "May" clause in the ASN.1 class definition for the
480*2de962bdSlukem   service type. If the keyword attribute is present, then its value is
481*2de962bdSlukem   of no consequence, but for consistency we make it simply the NUL
482*2de962bdSlukem   character, "\00".
483*2de962bdSlukem
484*2de962bdSlukem2.3 Template Flags
485*2de962bdSlukem
486*2de962bdSlukem   SLP template flags can be handled as described in the following
487*2de962bdSlukem   subsections.
488*2de962bdSlukem
489*2de962bdSlukem2.3.1 Multi-valued
490*2de962bdSlukem
491*2de962bdSlukem   Multi-valued attributes are defined in an SLP template using the one
492*2de962bdSlukem   value.  All values for a given attribute must be of the same type.
493*2de962bdSlukem
494*2de962bdSlukem   LDAP attribute definitions require that a single valued attribute
495*2de962bdSlukem   include the SINGLE-VALUE tag if the attribute is single valued.
496*2de962bdSlukem   Otherwise, the attribute is assumed to be multivalued by default.
497*2de962bdSlukem
498*2de962bdSlukem
499*2de962bdSlukem
500*2de962bdSlukem
501*2de962bdSlukem
502*2de962bdSlukem
503*2de962bdSlukem
504*2de962bdSlukem
505*2de962bdSlukem
506*2de962bdSlukemKempf, et al.                Informational                      [Page 9]
507*2de962bdSlukem
508*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
509*2de962bdSlukem
510*2de962bdSlukem
511*2de962bdSlukem2.3.2 Optional
512*2de962bdSlukem
513*2de962bdSlukem   SLP uses the 'O' flag to indicate an attribute may or may not be
514*2de962bdSlukem   present.  These optional attributes are defined using the "May"
515*2de962bdSlukem   clause in the ASN.1 definition class definition for the service type.
516*2de962bdSlukem   All other attributes must be defined as a "Must".
517*2de962bdSlukem
518*2de962bdSlukem2.3.3 Literal
519*2de962bdSlukem
520*2de962bdSlukem   ASN.1 does not have a mechanism to indicate that the values of an
521*2de962bdSlukem   attribute may not be translated from one language to another, since
522*2de962bdSlukem   ASN.1 schema are not typically translated. This flag is dropped when
523*2de962bdSlukem   translating a template, but presence of the flag should be noted in
524*2de962bdSlukem   the DESC field. It should be placed on a separate line and tagged
525*2de962bdSlukem   with "Literal:" so the template can be reconstructed from the schema.
526*2de962bdSlukem
527*2de962bdSlukem2.3.4 Explicit Matching
528*2de962bdSlukem
529*2de962bdSlukem   The SLP template syntax uses a flag of 'X' to indicate that an
530*2de962bdSlukem   attribute must be present in order for the query to be properly
531*2de962bdSlukem   satisfied.  There is no provision for requiring that particular
532*2de962bdSlukem   attributes be in a query. Consequently, this flag is dropped when
533*2de962bdSlukem   translating a template, but presence of the flag should be noted in
534*2de962bdSlukem   the DESC field. It should be placed on a separate line and tagged
535*2de962bdSlukem   with "Explicit:" so the template can be reconstructed from the
536*2de962bdSlukem   schema.
537*2de962bdSlukem
538*2de962bdSlukem2.4 Default and Allowed Value Lists
539*2de962bdSlukem
540*2de962bdSlukem   The SLP template grammar provides the capability to define default
541*2de962bdSlukem   and allowed values for an attribute. The SLP protocol does not
542*2de962bdSlukem   enforce these restrictions on registered attributes, however.  The
543*2de962bdSlukem   default and allowed values may be used by client side applications,
544*2de962bdSlukem   or alternatively it may also be used by DAs to initialize
545*2de962bdSlukem   registrations having no attributes and to limit attribute values to
546*2de962bdSlukem   the template allowed values.
547*2de962bdSlukem
548*2de962bdSlukem   LDAP servers also do not support default and allowed values on
549*2de962bdSlukem   attributes. Therefore, enforcement of default and allowed values in
550*2de962bdSlukem   SLP templates is left up to the clients or a DA, if the DA is
551*2de962bdSlukem   backending into LDAP. The default and allowed values should be
552*2de962bdSlukem   included in the DESC field. The comments should be placed on separate
553*2de962bdSlukem   lines and labeled with the "Default:" and "Allowed:" tags to allow
554*2de962bdSlukem   reconstruction of the template.
555*2de962bdSlukem
556*2de962bdSlukem
557*2de962bdSlukem
558*2de962bdSlukem
559*2de962bdSlukem
560*2de962bdSlukem
561*2de962bdSlukem
562*2de962bdSlukemKempf, et al.                Informational                     [Page 10]
563*2de962bdSlukem
564*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
565*2de962bdSlukem
566*2de962bdSlukem
567*2de962bdSlukem2.5 Descriptive Text
568*2de962bdSlukem
569*2de962bdSlukem   The descriptive text associated with an attribute definition should
570*2de962bdSlukem   be included in the DESC field. It should start on a separate line and
571*2de962bdSlukem   begin with the "Description:" tag.
572*2de962bdSlukem
573*2de962bdSlukem2.6 Generating LDAP Attribute OIDs
574*2de962bdSlukem
575*2de962bdSlukem   LDAP attributes require an OID. In general, there is no a priori way
576*2de962bdSlukem   that an algorithm can be defined for generating OIDs, because it will
577*2de962bdSlukem   depend on the conventions used by the organization developing the
578*2de962bdSlukem   template. In some cases, an organization's procedure for generating
579*2de962bdSlukem   OIDs may be regular enough that a template developer can
580*2de962bdSlukem   algorithmically generate OIDs off of an assigned root. Whatever means
581*2de962bdSlukem   is used, the template developer should assure that unique OIDs are
582*2de962bdSlukem   assigned to each SLP attribute that is translated into an LDAP
583*2de962bdSlukem   attribute.
584*2de962bdSlukem
585*2de962bdSlukem2.7 Example
586*2de962bdSlukem
587*2de962bdSlukem   The template included below is a hypothetical abstract printer
588*2de962bdSlukem   service template, similar to that described in [10].
589*2de962bdSlukem
590*2de962bdSlukem      template-type = printer
591*2de962bdSlukem
592*2de962bdSlukem      template-version = 0.0
593*2de962bdSlukem
594*2de962bdSlukem      template-description =
595*2de962bdSlukem      The printer service template describes the attributes supported by
596*2de962bdSlukem      network printing devices.  Devices may be either directly
597*2de962bdSlukem      connected to a network, or connected to a printer spooler that
598*2de962bdSlukem      understands the a network queuing protocol such as IPP, lpr or the
599*2de962bdSlukem      Salutation  Architecture.
600*2de962bdSlukem
601*2de962bdSlukem      template-url-syntax =
602*2de962bdSlukem      ;The URL syntax is specific to the printing protocol being
603*2de962bdSlukem      ;employed
604*2de962bdSlukem
605*2de962bdSlukem      description = STRING
606*2de962bdSlukem      # This attribute is a free form string that can contain any
607*2de962bdSlukem      # site-specific descriptive information about this printer.
608*2de962bdSlukem
609*2de962bdSlukem      printer-security-mechanisms-supported = STRING L M
610*2de962bdSlukem      none
611*2de962bdSlukem      # This attribute indicates the security mechanisms supported
612*2de962bdSlukem      tls, ssl, http-basic, http-digest, none
613*2de962bdSlukem
614*2de962bdSlukem
615*2de962bdSlukem
616*2de962bdSlukem
617*2de962bdSlukem
618*2de962bdSlukemKempf, et al.                Informational                     [Page 11]
619*2de962bdSlukem
620*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
621*2de962bdSlukem
622*2de962bdSlukem
623*2de962bdSlukem      printer-operator = STRING O L M
624*2de962bdSlukem      # A person, or persons responsible for maintaining a
625*2de962bdSlukem      # printer on a day-to-day basis, including such tasks
626*2de962bdSlukem      # as filling empty media trays, emptying full output
627*2de962bdSlukem      # trays, replacing toner cartridges, clearing simple
628*2de962bdSlukem      # paper jams, etc.
629*2de962bdSlukem
630*2de962bdSlukem      printer-location-address = STRING O
631*2de962bdSlukem      # Physical/Postal address for this device.  Useful for
632*2de962bdSlukem      # nailing down a group of printers in a very large corporate
633*2de962bdSlukem      # network.  For example: 960 Main Street, San Jose, CA 95130
634*2de962bdSlukem
635*2de962bdSlukem      printer-priority-queue = BOOLEAN O
636*2de962bdSlukem      FALSE
637*2de962bdSlukem      # TRUE indicates this printer or print queue is a priority
638*2de962bdSlukem      # queuing device.
639*2de962bdSlukem
640*2de962bdSlukem      printer-number-up = INTEGER O
641*2de962bdSlukem      1
642*2de962bdSlukem      # This job attribute specifies the number of source
643*2de962bdSlukem      # page-images to impose upon a single side of an instance
644*2de962bdSlukem      # of a selected medium.
645*2de962bdSlukem      1, 2, 4
646*2de962bdSlukem
647*2de962bdSlukem      printer-paper-output = STRING M L O
648*2de962bdSlukem      standard
649*2de962bdSlukem      # This attribute describes the mode in which pages output
650*2de962bdSlukem      # are arranged.
651*2de962bdSlukem
652*2de962bdSlukem      standard, noncollated sort, collated sort, stack, unknown
653*2de962bdSlukem
654*2de962bdSlukem   We assume that the concrete type "service:printer:lpr" for printers
655*2de962bdSlukem   that speak the LPR protocol [4] has the following template
656*2de962bdSlukem   definition:
657*2de962bdSlukem
658*2de962bdSlukem      template-type = printer:lpr
659*2de962bdSlukem
660*2de962bdSlukem      template-version = 0.0
661*2de962bdSlukem
662*2de962bdSlukem      template-description =
663*2de962bdSlukem      The printer:lpr service template describes the attributes
664*2de962bdSlukem      supported by network printing devices that speak the
665*2de962bdSlukem      LPR protocol. No new attributes are included.
666*2de962bdSlukem
667*2de962bdSlukem      template-url-syntax = queue
668*2de962bdSlukem      queue = ;The queue name, see RFC 1179.
669*2de962bdSlukem
670*2de962bdSlukem
671*2de962bdSlukem
672*2de962bdSlukem
673*2de962bdSlukem
674*2de962bdSlukemKempf, et al.                Informational                     [Page 12]
675*2de962bdSlukem
676*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
677*2de962bdSlukem
678*2de962bdSlukem
679*2de962bdSlukem   The LDAP class definition for the "service:printer:lpr" concrete
680*2de962bdSlukem   service type is translated as follows:
681*2de962bdSlukem
682*2de962bdSlukem   ( ---place the assigned OID here---
683*2de962bdSlukem     NAME  'service-printer-lpr'
684*2de962bdSlukem     DESC  'Description: The printer:lpr service template
685*2de962bdSlukem                 describes the attributes supported by network printing
686*2de962bdSlukem                 devices that speak the LPR protocol. No new attributes
687*2de962bdSlukem                 are included.
688*2de962bdSlukem
689*2de962bdSlukem            URL Syntax: queue
690*2de962bdSlukem                 queue = ;The queue name, see RFC 1179.'
691*2de962bdSlukem     SUP   slpService
692*2de962bdSlukem     MUST  ( description $ security-mechanisms-supported $
693*2de962bdSlukem     labeledURI)
694*2de962bdSlukem     MAY   ( operator $ location-address $ priority-queue $
695*2de962bdSlukem             number-up $ paper-output)
696*2de962bdSlukem   )
697*2de962bdSlukem
698*2de962bdSlukem   The attribute definitions are translated as follows:
699*2de962bdSlukem
700*2de962bdSlukem   ( ---place the assigned OID here---
701*2de962bdSlukem     NAME 'printer-security-mechanisms-supported'
702*2de962bdSlukem     DESC 'Description: This attribute indicates the security mechanisms
703*2de962bdSlukem           supported.
704*2de962bdSlukem
705*2de962bdSlukem           Default: value
706*2de962bdSlukem
707*2de962bdSlukem           Allowed: tls, ssl, http-basic, http-digest, none
708*2de962bdSlukem
709*2de962bdSlukem           Literal:'
710*2de962bdSlukem     EQUALITY caseIgnoreMatch
711*2de962bdSlukem     ORDERING caseIgnoreOrderingMatch
712*2de962bdSlukem     SUBSTR caseIgnoreSubstringsMatch
713*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
714*2de962bdSlukem   )
715*2de962bdSlukem
716*2de962bdSlukem   ( ---place the assigned OID here---
717*2de962bdSlukem     NAME 'printer-operator'
718*2de962bdSlukem     DESC 'Description: A person, or persons responsible for
719*2de962bdSlukem           maintaining a printer on a day-to-day basis, including
720*2de962bdSlukem           such tasks as filling empty media trays, emptying full
721*2de962bdSlukem           output trays, replacing toner cartridges, clearing simple
722*2de962bdSlukem           paper jams, etc.
723*2de962bdSlukem
724*2de962bdSlukem
725*2de962bdSlukem
726*2de962bdSlukem
727*2de962bdSlukem
728*2de962bdSlukem
729*2de962bdSlukem
730*2de962bdSlukemKempf, et al.                Informational                     [Page 13]
731*2de962bdSlukem
732*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
733*2de962bdSlukem
734*2de962bdSlukem
735*2de962bdSlukem           Literal:'
736*2de962bdSlukem     EQUALITY caseIgnoreMatch
737*2de962bdSlukem     ORDERING caseIgnoreOrderingMatch
738*2de962bdSlukem     SUBSTR caseIgnoreSubstringsMatch
739*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
740*2de962bdSlukem   )
741*2de962bdSlukem
742*2de962bdSlukem   ( --place the assigned OID here---
743*2de962bdSlukem     NAME 'printer-location-address'
744*2de962bdSlukem     DESC 'Description Physical/Postal address for this device.
745*2de962bdSlukem           Useful for nailing down a group of printers in a very
746*2de962bdSlukem           large corporate network.  For example: 960 Main Street,
747*2de962bdSlukem           San Jose, CA 95130.'
748*2de962bdSlukem     EQUALITY caseIgnoreMatch
749*2de962bdSlukem     ORDERING caseIgnoreOrderingMatch
750*2de962bdSlukem     SUBSTR caseIgnoreSubstringsMatch
751*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
752*2de962bdSlukem     SINGLE-VALUE
753*2de962bdSlukem   )
754*2de962bdSlukem
755*2de962bdSlukem   ( ---place the assigned OID here---
756*2de962bdSlukem     NAME 'printer-priority-queue'
757*2de962bdSlukem     DESC 'Description: TRUE indicates this printer or print
758*2de962bdSlukem          queue is a priority queuing device.'
759*2de962bdSlukem     EQUALITY booleanMatch
760*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
761*2de962bdSlukem     SINGLE-VALUE
762*2de962bdSlukem   )
763*2de962bdSlukem
764*2de962bdSlukem   ( ---place the assigned OID here---
765*2de962bdSlukem     NAME 'printer-number-up'
766*2de962bdSlukem     DESC 'Description: This job attribute specifies the number
767*2de962bdSlukem           of source page-images to impose upon a single side of
768*2de962bdSlukem           an instance of a selected medium. This attribute is
769*2de962bdSlukem           INTEGER.
770*2de962bdSlukem
771*2de962bdSlukem           Default: 1
772*2de962bdSlukem
773*2de962bdSlukem           Allowed: 1, 2, 3, 4'
774*2de962bdSlukem     EQUALITY integerMatch
775*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
776*2de962bdSlukem     SINGLE-VALUE
777*2de962bdSlukem   )
778*2de962bdSlukem
779*2de962bdSlukem
780*2de962bdSlukem
781*2de962bdSlukem
782*2de962bdSlukem
783*2de962bdSlukem
784*2de962bdSlukem
785*2de962bdSlukem
786*2de962bdSlukemKempf, et al.                Informational                     [Page 14]
787*2de962bdSlukem
788*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
789*2de962bdSlukem
790*2de962bdSlukem
791*2de962bdSlukem   ( ---place the assigned OID here---
792*2de962bdSlukem     NAME 'printer-paper-output'
793*2de962bdSlukem     DESC 'Description: This attribute describes the mode in
794*2de962bdSlukem           which pages output are arranged. Default value is
795*2de962bdSlukem           standard.
796*2de962bdSlukem
797*2de962bdSlukem           Default: standard
798*2de962bdSlukem
799*2de962bdSlukem           Allowed: standard, noncollated sort, collated sort,
800*2de962bdSlukem             stack, unknown.
801*2de962bdSlukem           Literal:'
802*2de962bdSlukem     EQUALITY caseIgnoreMatch
803*2de962bdSlukem     ORDERING caseIgnoreOrderingMatch
804*2de962bdSlukem     SUBSTR caseIgnoreSubstringsMatch
805*2de962bdSlukem     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
806*2de962bdSlukem   )
807*2de962bdSlukem
808*2de962bdSlukem3.0 Attribute Name Conflicts
809*2de962bdSlukem
810*2de962bdSlukem   LDAP has a flat name space, and attribute names and OIDs must be
811*2de962bdSlukem   unique in a directory server. In order to avoid name conflicts in the
812*2de962bdSlukem   translation of SLP templates to LDAP schemas, template developers may
813*2de962bdSlukem   want to consider prepending the name of the service type to the
814*2de962bdSlukem   attribute. Postprocessing attribute names to make them unique when
815*2de962bdSlukem   translated is not possible, because it would require the DA to
816*2de962bdSlukem   rewrite queries before submitting them to the directory server. In
817*2de962bdSlukem   addition, developers should use standard LDAP attributes when such
818*2de962bdSlukem   attributes are available.
819*2de962bdSlukem
820*2de962bdSlukem   In the above example template, the abstract type name "printer" is
821*2de962bdSlukem   prepended to attributes to avoid conflicts. The standard
822*2de962bdSlukem   "description" attribute defined by X.520 [3] is used to translate the
823*2de962bdSlukem   template description attribute.
824*2de962bdSlukem
825*2de962bdSlukem4.0 Mapping from Schema to Templates
826*2de962bdSlukem
827*2de962bdSlukem   The reverse mapping from LDAP schema to SLP service type templates
828*2de962bdSlukem   requires dealing with both LDAP and ASN.1 data types.  RFC 2252
829*2de962bdSlukem   defines 33 attribute syntaxes that should be supported by LDAP
830*2de962bdSlukem   directory servers.  These syntaxes are defined using BNF for strings
831*2de962bdSlukem   or using ASN.1 for binary  valued attributes defined by X.520.
832*2de962bdSlukem
833*2de962bdSlukem   Mapping of the LDAP data types into SLP template types is fairly
834*2de962bdSlukem   straightforward, but mapping arbitrary ASN.1 data types is somewhat
835*2de962bdSlukem   more complicated and requires encoding the ASN.1 data type into a
836*2de962bdSlukem   string. To a certain extent, this masks the ASN.1 data type because
837*2de962bdSlukem   it becomes impossible to distinguish between a native string having
838*2de962bdSlukem
839*2de962bdSlukem
840*2de962bdSlukem
841*2de962bdSlukem
842*2de962bdSlukemKempf, et al.                Informational                     [Page 15]
843*2de962bdSlukem
844*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
845*2de962bdSlukem
846*2de962bdSlukem
847*2de962bdSlukem   content equivalent to an encoded ASN.1 string. However, inclusion of
848*2de962bdSlukem   the ASN.1 data type in the comment provides additional information
849*2de962bdSlukem   should a reverse transformation from SLP to ASN.1 be required.
850*2de962bdSlukem
851*2de962bdSlukem   The following subsections deal with both LDAP and ASN.1 attribute
852*2de962bdSlukem   data type mappings.
853*2de962bdSlukem
854*2de962bdSlukem4.1 Mapping LDAP Attribute Syntaxes to SLP Attribute Types
855*2de962bdSlukem
856*2de962bdSlukem   The following table contains the mappings for LDAP syntaxes to SLP
857*2de962bdSlukem   data types:
858*2de962bdSlukem
859*2de962bdSlukem         LDAP Type                              SLP Type
860*2de962bdSlukem      --------------------------------------------------------
861*2de962bdSlukem         ACI Item                                 NA
862*2de962bdSlukem         Access Point                             NA
863*2de962bdSlukem         Attribute Type Description               NA
864*2de962bdSlukem         Audio                                    Opaque
865*2de962bdSlukem         Binary                                   ASN.1 escape
866*2de962bdSlukem         Bit String                               String
867*2de962bdSlukem         Boolean                                  Boolean
868*2de962bdSlukem         Certificate                              Opaque
869*2de962bdSlukem         Certificate List                         Opaque
870*2de962bdSlukem         Certificate Pair                         Opaque
871*2de962bdSlukem         Country String                           String
872*2de962bdSlukem         DN                                       String
873*2de962bdSlukem         Data Quality Syntax                      NA
874*2de962bdSlukem         Delivery Method                          NA
875*2de962bdSlukem         Directory String                         String
876*2de962bdSlukem         DIT Content Rule Description             NA
877*2de962bdSlukem         DIT Structure Rule Description           NA
878*2de962bdSlukem         DL Submit Permission                     NA
879*2de962bdSlukem         DSA Quality Syntax                       NA
880*2de962bdSlukem         Enhanced Guide                           NA
881*2de962bdSlukem         Facsimile Telephone Number               String
882*2de962bdSlukem         Fax                                      Opaque
883*2de962bdSlukem         Generalized Time                         String
884*2de962bdSlukem         Guide                                    NA
885*2de962bdSlukem         IA5 String                               String
886*2de962bdSlukem         INTEGER                                  Integer
887*2de962bdSlukem         JPEG                                     Opaque
888*2de962bdSlukem         LDAP Syntax Description                  NA
889*2de962bdSlukem         LDAP Schema Definition                   NA
890*2de962bdSlukem         LDAP Schema Description                  NA
891*2de962bdSlukem         Master and Shadow Access Points          NA
892*2de962bdSlukem         Matching Rule Description                NA
893*2de962bdSlukem         Matching Rule Use Description            NA
894*2de962bdSlukem         Mail Preference                          NA
895*2de962bdSlukem
896*2de962bdSlukem
897*2de962bdSlukem
898*2de962bdSlukemKempf, et al.                Informational                     [Page 16]
899*2de962bdSlukem
900*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
901*2de962bdSlukem
902*2de962bdSlukem
903*2de962bdSlukem         MHS OR Address                           String
904*2de962bdSlukem         Modify Rights                            NA
905*2de962bdSlukem         Name and Optional UID                    NA
906*2de962bdSlukem         Name Form Description                    NA
907*2de962bdSlukem         Numeric String                           String
908*2de962bdSlukem         Object Class Description                 NA
909*2de962bdSlukem         Octet String                             Opaque
910*2de962bdSlukem         OID                                      String
911*2de962bdSlukem         Other Mailbox                            String
912*2de962bdSlukem         Postal Address                           String
913*2de962bdSlukem         Protocol Information                     NA
914*2de962bdSlukem         Presentation Address                     String
915*2de962bdSlukem         Printable String                         String
916*2de962bdSlukem         Substring Assertion                      NA
917*2de962bdSlukem         Subtree Specification                    NA
918*2de962bdSlukem         Supplier Information                     NA
919*2de962bdSlukem         Supplier or Consumer                     NA
920*2de962bdSlukem         Supplier And Consumer                    NA
921*2de962bdSlukem         Supported Algorithm                      NA
922*2de962bdSlukem         DSE Type                                 NA
923*2de962bdSlukem         Telephone Number                         String
924*2de962bdSlukem         Teletex Terminal Identifier              String
925*2de962bdSlukem         Telex Number                             String
926*2de962bdSlukem         UTC Time                                 String
927*2de962bdSlukem
928*2de962bdSlukem4.2 Mapping ASN.1 Types to SLP Types
929*2de962bdSlukem
930*2de962bdSlukem   ASN.1 employs a much richer set of data types than provided by SLP.
931*2de962bdSlukem   The table below show the mapping of selected ASN.1 data type to their
932*2de962bdSlukem   nearest SLP equivalent.  Because of the complexity and flexibility of
933*2de962bdSlukem   ASN.1, a complete list cannot be provided.
934*2de962bdSlukem
935*2de962bdSlukem   As sample of some ASN.1 encodings and their mappings to SLP:
936*2de962bdSlukem
937*2de962bdSlukem      ASN.1 type               SLP type
938*2de962bdSlukem      -----------------------------------------
939*2de962bdSlukem      INTEGER                  Integer
940*2de962bdSlukem      BOOLEAN                  Boolean
941*2de962bdSlukem      ENUMERATED               String
942*2de962bdSlukem      OBJECT IDENTIFIER        String
943*2de962bdSlukem      OCTET STRING             Opaque
944*2de962bdSlukem      REAL                     String
945*2de962bdSlukem
946*2de962bdSlukem   Data types that do not map directly to SLP data types should be
947*2de962bdSlukem   defined as either a String, or as Opaque.  ASN.1 types that may only
948*2de962bdSlukem   contain valid characters for Strings, as defined in X.680 [9] should
949*2de962bdSlukem   be encoded as strings.  ASN.1 types such as GraphicString that change
950*2de962bdSlukem   their character set encoding in part way through a value should not
951*2de962bdSlukem
952*2de962bdSlukem
953*2de962bdSlukem
954*2de962bdSlukemKempf, et al.                Informational                     [Page 17]
955*2de962bdSlukem
956*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
957*2de962bdSlukem
958*2de962bdSlukem
959*2de962bdSlukem   be encoded as strings, however, If such types are required, the SLP
960*2de962bdSlukem   Opaque type should be used. In either case, the first line of the
961*2de962bdSlukem   help text is used to indicate the original ASN.1 data type.
962*2de962bdSlukem
963*2de962bdSlukem   The following subsections describe how to convert from the ASN.1 BER
964*2de962bdSlukem   [9] to the SLP template for the different types in the table above.
965*2de962bdSlukem
966*2de962bdSlukem4.2.1 Integer
967*2de962bdSlukem
968*2de962bdSlukem   Both SLP templates and ASN.1 support Integers, so there is a one to
969*2de962bdSlukem   one mapping between an SLP Integer attribute and an ASN.1 Integer
970*2de962bdSlukem   attribute.  Details on the encoding of integers is summarized in the
971*2de962bdSlukem   SLP template to ASN.1 section above.
972*2de962bdSlukem
973*2de962bdSlukem4.2.2 Boolean
974*2de962bdSlukem
975*2de962bdSlukem   Boolean values are supported by both SLP and ASN.1, though on wire
976*2de962bdSlukem   encodings differ.  X.680 [9] specifies zero and non-zero encoding for
977*2de962bdSlukem   booleans, where SLP encodes booleans using the strings TRUE and
978*2de962bdSlukem   FALSE.  In general, most LDAP servers will use the LDAP Boolean type
979*2de962bdSlukem   (which is a string), so again the ASN.1 type should be recorded in
980*2de962bdSlukem   the comment or it will be lost.
981*2de962bdSlukem
982*2de962bdSlukem4.2.3 Enumerated
983*2de962bdSlukem
984*2de962bdSlukem   SLP templates support the concept of enumerations through the listing
985*2de962bdSlukem   of allowed values in the attribute definition.  These enumerations
986*2de962bdSlukem   are not strictly binding on clients or DAs, but they are similar to
987*2de962bdSlukem   the ASN.1 definition of enumerations. BER encodes the ASN.1
988*2de962bdSlukem   enumeration by passing the number of the element's position in the
989*2de962bdSlukem   enumeration.  This requires both sides to have knowledge of the
990*2de962bdSlukem   specific enumeration prior to decoding an enumeration's value. SLP
991*2de962bdSlukem   provides no specific support for transmitting enumerations. They are
992*2de962bdSlukem   simply String types. Information on the ASN.1 type and ASN.1 encoding
993*2de962bdSlukem   of the enumeration values is recorded in the comment.
994*2de962bdSlukem
995*2de962bdSlukem   Example:
996*2de962bdSlukem
997*2de962bdSlukem   color-supported = STRING   M
998*2de962bdSlukem   none
999*2de962bdSlukem   # ASN.1: Enumeration.
1000*2de962bdSlukem   # ASN.1 Mapping: none = 0, highlight = 1, three color = 2,
1001*2de962bdSlukem   #   four color = 4, monochromatic = 5
1002*2de962bdSlukem   #This attribute specifies whether the Printer supports
1003*2de962bdSlukem   # color and, if so, what type.
1004*2de962bdSlukem   none,highlight,three color,four color,monochromatic
1005*2de962bdSlukem
1006*2de962bdSlukem
1007*2de962bdSlukem
1008*2de962bdSlukem
1009*2de962bdSlukem
1010*2de962bdSlukemKempf, et al.                Informational                     [Page 18]
1011*2de962bdSlukem
1012*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1013*2de962bdSlukem
1014*2de962bdSlukem
1015*2de962bdSlukem4.2.4 Object Identifier
1016*2de962bdSlukem
1017*2de962bdSlukem   Object identifiers(OIDs) are commonly used in the ASN.1 world to
1018*2de962bdSlukem   identify object and attributes.  OIDs are a numerical representation
1019*2de962bdSlukem   of an element's place in the naming hierarchy. Each element at a
1020*2de962bdSlukem   particular level of a hierarchy has a unique number assigned within
1021*2de962bdSlukem   that level of the hierarchy. A sample OID would be the naming tree
1022*2de962bdSlukem   for SNMP MIBs:  iso(1) org(3) dod(6) internet(1) mgmt(2) mib(1) would
1023*2de962bdSlukem   be written as the string "1.3.6.1.2.1".
1024*2de962bdSlukem
1025*2de962bdSlukem   Because this representation reduces down to a string of dot separated
1026*2de962bdSlukem   numbers, this maps easily to the SLP String type.  The help text for
1027*2de962bdSlukem   this element should indicate it is an ASN.1 OID
1028*2de962bdSlukem
1029*2de962bdSlukem      identifier = STRING
1030*2de962bdSlukem      # ASN.1: OID
1031*2de962bdSlukem      # The object identifier for this SNMP agent.
1032*2de962bdSlukem
1033*2de962bdSlukem4.2.5 Octet String
1034*2de962bdSlukem
1035*2de962bdSlukem   An ASN.1 octet string should be mapped to an Opaque in an SLP
1036*2de962bdSlukem   template.  An octet string is a sequence of bytes, whereas an Opaque
1037*2de962bdSlukem   is a a string that encodes a sequence of bytes. Again, the ASN.1 type
1038*2de962bdSlukem   is lost unless recorded in the comment.
1039*2de962bdSlukem
1040*2de962bdSlukem4.2.6 Real
1041*2de962bdSlukem
1042*2de962bdSlukem   There is no direct mapping between floating point numbers and any SLP
1043*2de962bdSlukem   data types.  Attributes having the ASN.1 type of Real are mapped to
1044*2de962bdSlukem   SLP type String.  Comments are added to the attribute help text
1045*2de962bdSlukem   indicating the value was originally an ASN.1 real.  For example:
1046*2de962bdSlukem
1047*2de962bdSlukem      weight = STRING
1048*2de962bdSlukem      # ASN.1: Real
1049*2de962bdSlukem      # The objects weight in pounds.
1050*2de962bdSlukem
1051*2de962bdSlukem4.3 Example ASN.1 Schema
1052*2de962bdSlukem
1053*2de962bdSlukem   The following is an example schema for an exported filesystem.  The
1054*2de962bdSlukem   section presents it as in ASN.1 and the following section shows the
1055*2de962bdSlukem   SLP template translation. The template translation does not capture
1056*2de962bdSlukem   the actual attribute format for the Set type, that would be done in
1057*2de962bdSlukem   the LDAP client software making the translation. Note that even
1058*2de962bdSlukem   though the class definition does not conform with the previously
1059*2de962bdSlukem   defined conventions for SLP classes, the schema can still be
1060*2de962bdSlukem   translated into an SLP template.  The syntax used in this example
1061*2de962bdSlukem   follows
1062*2de962bdSlukem
1063*2de962bdSlukem
1064*2de962bdSlukem
1065*2de962bdSlukem
1066*2de962bdSlukemKempf, et al.                Informational                     [Page 19]
1067*2de962bdSlukem
1068*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1069*2de962bdSlukem
1070*2de962bdSlukem
1071*2de962bdSlukem         -- Abstraction of a fstab entry (a "mount").
1072*2de962bdSlukem         -- These lookups would likely be performed by an
1073*2de962bdSlukem         -- an automounter type application.
1074*2de962bdSlukem         mount   OBJECT-CLASS ::= {
1075*2de962bdSlukem                 SUBCLASS OF { top }
1076*2de962bdSlukem                 MUST CONTAIN { mountHost |
1077*2de962bdSlukem                                mountDirectory |
1078*2de962bdSlukem                                mountType
1079*2de962bdSlukem                              }
1080*2de962bdSlukem                 MAY CONTAIN { mountOption |
1081*2de962bdSlukem                               mountDumpFrequency |
1082*2de962bdSlukem                               mountPassNo
1083*2de962bdSlukem                             }
1084*2de962bdSlukem                 ID { <oid1> }
1085*2de962bdSlukem         }
1086*2de962bdSlukem
1087*2de962bdSlukem
1088*2de962bdSlukem         - The mount host.
1089*2de962bdSlukem         mountHost       ATTRIBUTE ::= {
1090*2de962bdSlukem                         WITH SYNTAX caseIgnoreString
1091*2de962bdSlukem                         EQUALITY MATCHING RULE caseIgnoreMatch
1092*2de962bdSlukem                         SINGLE VALUE
1093*2de962bdSlukem                         ID { <oid2> }
1094*2de962bdSlukem         }
1095*2de962bdSlukem
1096*2de962bdSlukem
1097*2de962bdSlukem         - The file system to mount.
1098*2de962bdSlukem         mountDirectory  ATTRIBUTE ::= {
1099*2de962bdSlukem                         WITH SYNTAX caseIgnoreString
1100*2de962bdSlukem                         EQUALITY MATCHING RULE caseIgnoreMatch
1101*2de962bdSlukem                         SINGLE VALUE
1102*2de962bdSlukem                         ID { <oid3> }
1103*2de962bdSlukem         }
1104*2de962bdSlukem
1105*2de962bdSlukem         - The type of file system being mounted.
1106*2de962bdSlukem         mountType       ATTRIBUTE ::= {
1107*2de962bdSlukem                         WITH SYNTAX INTEGER { ufs(1),
1108*2de962bdSlukem                                               hsfs(2),
1109*2de962bdSlukem                                               nfs(3),
1110*2de962bdSlukem                                               rfs(4)
1111*2de962bdSlukem                                             }
1112*2de962bdSlukem                         EQUALITY MATCHING RULE integerMatch
1113*2de962bdSlukem                         SINGLE VALUE
1114*2de962bdSlukem                         ID { <oid4> }
1115*2de962bdSlukem         }
1116*2de962bdSlukem
1117*2de962bdSlukem
1118*2de962bdSlukem
1119*2de962bdSlukem
1120*2de962bdSlukem
1121*2de962bdSlukem
1122*2de962bdSlukemKempf, et al.                Informational                     [Page 20]
1123*2de962bdSlukem
1124*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1125*2de962bdSlukem
1126*2de962bdSlukem
1127*2de962bdSlukem         - Options for the mount operation.
1128*2de962bdSlukem         mountOption     ATTRIBUTE ::= {
1129*2de962bdSlukem                         WITH SYNTAX caseIgnoreString
1130*2de962bdSlukem                         EQUALITY MATCHING RULE caseIgnoreString
1131*2de962bdSlukem                         ID { <oid5> }
1132*2de962bdSlukem         }
1133*2de962bdSlukem
1134*2de962bdSlukem
1135*2de962bdSlukem         - How often to dump the file system.
1136*2de962bdSlukem         mountDumpFrequency      ATTRIBUTE :: = {
1137*2de962bdSlukem                                 WITH SYNTAX  INTEGER (0..9)
1138*2de962bdSlukem                                 EQUALITY MATCHING RULE integerMatch
1139*2de962bdSlukem                                 SINGLE VALUE
1140*2de962bdSlukem                                 ID { <oid6> }
1141*2de962bdSlukem         }
1142*2de962bdSlukem
1143*2de962bdSlukem         - Boot time mount pass number.
1144*2de962bdSlukem         mountPassNo     ATTRIBUTE ::= {
1145*2de962bdSlukem                         WITH SYNTAX INTEGER
1146*2de962bdSlukem                         EQUALITY MATCHING RULE integerMatch
1147*2de962bdSlukem                         SINGLE VALUE
1148*2de962bdSlukem                         ID { <oid7> }
1149*2de962bdSlukem         }
1150*2de962bdSlukem
1151*2de962bdSlukem   The translated SLP template is:
1152*2de962bdSlukem
1153*2de962bdSlukem      template-type = mount
1154*2de962bdSlukem
1155*2de962bdSlukem      template-version = 1.0
1156*2de962bdSlukem
1157*2de962bdSlukem      template-description = "Describes a remote filesystem access
1158*2de962bdSlukem      protocol"
1159*2de962bdSlukem
1160*2de962bdSlukem      template-url-syntax =
1161*2de962bdSlukem                   filesystem   = 1*[ DIGIT / ALPHA ]
1162*2de962bdSlukem                   urlpath = "/" filesystem
1163*2de962bdSlukem
1164*2de962bdSlukem      mountHost = STRING L
1165*2de962bdSlukem      # ASN.1: Case Ignore String, Single Value
1166*2de962bdSlukem      # The mount host
1167*2de962bdSlukem
1168*2de962bdSlukem      mountDirectory = STRING L
1169*2de962bdSlukem      # ASN.1: Case Ignore String, Single Value
1170*2de962bdSlukem      # The filesystem to mount
1171*2de962bdSlukem
1172*2de962bdSlukem
1173*2de962bdSlukem
1174*2de962bdSlukem
1175*2de962bdSlukem
1176*2de962bdSlukem
1177*2de962bdSlukem
1178*2de962bdSlukemKempf, et al.                Informational                     [Page 21]
1179*2de962bdSlukem
1180*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1181*2de962bdSlukem
1182*2de962bdSlukem
1183*2de962bdSlukem      mountType = STRING L
1184*2de962bdSlukem      ufs
1185*2de962bdSlukem      # ASN.1: Enumeration, Single Value
1186*2de962bdSlukem      # ASN.1 Mapping: ufs = 1, hsfs = 2, nfs = 3, rfs = 4
1187*2de962bdSlukem      # The type of the filesystem being mounted
1188*2de962bdSlukem      ufs, hsfs, nfs, rfs
1189*2de962bdSlukem
1190*2de962bdSlukem      mountOption = STRING M O L
1191*2de962bdSlukem      # ASN.1: Case Ignore String
1192*2de962bdSlukem      # mount options for this filesystem
1193*2de962bdSlukem
1194*2de962bdSlukem      mountDumpFrequency = INTEGER O
1195*2de962bdSlukem      0
1196*2de962bdSlukem      # ASN.1: Integer Range, Single Value
1197*2de962bdSlukem      # How often to dump this filesystem
1198*2de962bdSlukem      0, 1, 2, 3, 4, 5, 6, 7, 8, 9
1199*2de962bdSlukem
1200*2de962bdSlukem      mountPassNo = INTEGER O
1201*2de962bdSlukem      # ASN.1: Integer, Single Value
1202*2de962bdSlukem      # Boot time mount pass number
1203*2de962bdSlukem
1204*2de962bdSlukem5.0 Representing SLP Service Advertisements in an LDAP DIT
1205*2de962bdSlukem
1206*2de962bdSlukem   In addition to translating between SLP templates and LDAP schema,
1207*2de962bdSlukem   another area requiring compatibility is the representation of SLP
1208*2de962bdSlukem   service advertisements in an LDAP DIT. A standardized representation
1209*2de962bdSlukem   for service information allows SLP DAs to store service
1210*2de962bdSlukem   advertisements in LDAP, and for LDAP clients to query the DIT for
1211*2de962bdSlukem   those services.  Similarly, if LDAP clients represent service
1212*2de962bdSlukem   information in the same form, SLP clients can benefit from
1213*2de962bdSlukem   interoperability.
1214*2de962bdSlukem
1215*2de962bdSlukem   A service advertisement contains the service URL in a 'labeledURI'
1216*2de962bdSlukem   attribute [11]. The labeledURI attribute in a service advertisement
1217*2de962bdSlukem   should only contain the service URL for the service, with no
1218*2de962bdSlukem   additional label. It is recommended that the labeledURI be used as
1219*2de962bdSlukem   the RDN for the service object in the DIT.
1220*2de962bdSlukem
1221*2de962bdSlukem   Although service advertisements can appear anywhere within the DIT,
1222*2de962bdSlukem   it is recommended that all services be stored under a single common
1223*2de962bdSlukem   point, or root node, to facilitate searching in a domain. This allows
1224*2de962bdSlukem   a  client to search for all of advertisements of a particular service
1225*2de962bdSlukem   type, say, for all printers.  The recommended parent entry is one
1226*2de962bdSlukem   named "ou=service" below the entry which is the representation of the
1227*2de962bdSlukem   domain, as described in RFC 2247.
1228*2de962bdSlukem
1229*2de962bdSlukem
1230*2de962bdSlukem
1231*2de962bdSlukem
1232*2de962bdSlukem
1233*2de962bdSlukem
1234*2de962bdSlukemKempf, et al.                Informational                     [Page 22]
1235*2de962bdSlukem
1236*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1237*2de962bdSlukem
1238*2de962bdSlukem
1239*2de962bdSlukem   For example, a printer service with labeledURI of
1240*2de962bdSlukem   "service:lpr://printsrv/queue1" in the domain foobar.com advertised
1241*2de962bdSlukem   in the LDAP server that holds the entry "dc=foobar,dc=com" tree has
1242*2de962bdSlukem   the following DN:
1243*2de962bdSlukem
1244*2de962bdSlukem   "labeledURI=service:lpr://printsrv/queue1, ou=service, dc=foobar,
1245*2de962bdSlukem   dc=com"
1246*2de962bdSlukem
1247*2de962bdSlukem   While this leads to a flat space of service storage, since SLP uses
1248*2de962bdSlukem   search filters from LDAP for searches, these filters can be used for
1249*2de962bdSlukem   one-level searches from the root node.
1250*2de962bdSlukem
1251*2de962bdSlukem   The following example illustrates how an advertisement having a
1252*2de962bdSlukem   simple service type is represented. The advertisement (in conceptual
1253*2de962bdSlukem   form) for a printer is:
1254*2de962bdSlukem
1255*2de962bdSlukem      Service Type: service:lpr://printsrv/queue1
1256*2de962bdSlukem      Scopes: eng,corp
1257*2de962bdSlukem      Attributes:
1258*2de962bdSlukem        description = A general printer for all to use.
1259*2de962bdSlukem        security-mechanisms-supported = none
1260*2de962bdSlukem      Authentication: none
1261*2de962bdSlukem
1262*2de962bdSlukem   The RDN of the object is labeledURI=service:lpr://printsrv/queue1,
1263*2de962bdSlukem   and the following LDAP search filter will return this object, along
1264*2de962bdSlukem   with any others of the service type "service:lpr" that match the
1265*2de962bdSlukem   other attributes:
1266*2de962bdSlukem
1267*2de962bdSlukem      (&(service-advert-service-type=service:lpr)
1268*2de962bdSlukem        (service-advert-scopes=eng)
1269*2de962bdSlukem        (service-advert-scopes=corp)
1270*2de962bdSlukem        (description=A general printer for all to use.)
1271*2de962bdSlukem        (security-mechanisms-supported=none))
1272*2de962bdSlukem
1273*2de962bdSlukem   Service advertisements in SLP also have a lease time associated with
1274*2de962bdSlukem   them. In LDAP servers that support the extensions for dynamic
1275*2de962bdSlukem   directory services [12], the service advertisement entry objectClass
1276*2de962bdSlukem   should be extended with the dynamicObject class. This allows the
1277*2de962bdSlukem   service advertisement to time out within the LDAP directory server.
1278*2de962bdSlukem   If the LDAP directory server does not support the dynamic directory
1279*2de962bdSlukem   services extension, then advertisement lease timeouts must be handled
1280*2de962bdSlukem   by the SLP agent.
1281*2de962bdSlukem
1282*2de962bdSlukem   While the service advertisement schema outlined in this section is
1283*2de962bdSlukem   primarily for SLP DAs that use LDAP as a backing store, if LDAP
1284*2de962bdSlukem   agents register services using the same format, complete
1285*2de962bdSlukem   interoperability with SLP is achieved.
1286*2de962bdSlukem
1287*2de962bdSlukem
1288*2de962bdSlukem
1289*2de962bdSlukem
1290*2de962bdSlukemKempf, et al.                Informational                     [Page 23]
1291*2de962bdSlukem
1292*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1293*2de962bdSlukem
1294*2de962bdSlukem
1295*2de962bdSlukem6.0 Internationalization Considerations
1296*2de962bdSlukem
1297*2de962bdSlukem   SLP specifies that an RFC 1766 [13] language code accompanies every
1298*2de962bdSlukem   service advertisement. Language codes for service advertisements in
1299*2de962bdSlukem   LDAP must be represented according to RFC 2596 [14].
1300*2de962bdSlukem
1301*2de962bdSlukem   RFC 2596 prohibits language codes in DNs, and specifies that a
1302*2de962bdSlukem   directory server which does not support language codes must treat an
1303*2de962bdSlukem   attribute with a language code as an unrecognized attributes.
1304*2de962bdSlukem   According to RFC 2596, language codes are appended to attribute names
1305*2de962bdSlukem   with a semicolon (";"). For example, the following attribute/value
1306*2de962bdSlukem   pair is in the German locale:
1307*2de962bdSlukem
1308*2de962bdSlukem      (address;lang-de=44 Bahnhofstrasse, 2365 Weibstadt, Deutschland)
1309*2de962bdSlukem
1310*2de962bdSlukem   An attribute with a language tag in a specific locale is considered a
1311*2de962bdSlukem   separate attribute from attributes in other locales.
1312*2de962bdSlukem
1313*2de962bdSlukem   If the service advertisement is in the default SLP locale ("en", no
1314*2de962bdSlukem   dialect), then the language code need not be appended to the
1315*2de962bdSlukem   attribute name.
1316*2de962bdSlukem
1317*2de962bdSlukem   SLP queries in locales other than the default need not be rewritten
1318*2de962bdSlukem   to include language tags before being submitted to the directory
1319*2de962bdSlukem   server.  RFC 2596 specifies that all entries that match are returned,
1320*2de962bdSlukem   including those with language tags, without requiring the language
1321*2de962bdSlukem   tags to be explicitly present in the query. The SLP DA can then
1322*2de962bdSlukem   postprocess the result to select the entries from the required
1323*2de962bdSlukem   locale.
1324*2de962bdSlukem
1325*2de962bdSlukem7.0 Security Considerations
1326*2de962bdSlukem
1327*2de962bdSlukem   SLP authenticators are stored with the service advertisement in the
1328*2de962bdSlukem   DIT, as discussed in Section~7ef{slpdit}. LDAP clients need to use
1329*2de962bdSlukem   LDAP authentication [15] to assure that they are connecting with a
1330*2de962bdSlukem   secure server. In particular, SLP DAs that use LDAP as a back end
1331*2de962bdSlukem   store and that implement SLP authentication MUST use LDAP
1332*2de962bdSlukem   authentication to assure that the LDAP entries for their service
1333*2de962bdSlukem   registrations are secure.
1334*2de962bdSlukem
1335*2de962bdSlukemAcknowledgements
1336*2de962bdSlukem
1337*2de962bdSlukem   Many thanks are due to Mark Wahl whose detailed and insightful
1338*2de962bdSlukem   comments were instrumental in helping improve the technical accuracy
1339*2de962bdSlukem   of this document with respect to LDAP.
1340*2de962bdSlukem
1341*2de962bdSlukem
1342*2de962bdSlukem
1343*2de962bdSlukem
1344*2de962bdSlukem
1345*2de962bdSlukem
1346*2de962bdSlukemKempf, et al.                Informational                     [Page 24]
1347*2de962bdSlukem
1348*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1349*2de962bdSlukem
1350*2de962bdSlukem
1351*2de962bdSlukem8.0 References
1352*2de962bdSlukem
1353*2de962bdSlukem   [1]  Guttman, E., Perkins, C. and J. Kempf, "Service Templates and
1354*2de962bdSlukem        service: Schemes", RFC 2609, April 1999.
1355*2de962bdSlukem
1356*2de962bdSlukem   [2]  Wahl, W., Howes, T. and S. Kille, "Lightweight Directory Access
1357*2de962bdSlukem        Protocol (v3)", RFC 2251, December 1997.
1358*2de962bdSlukem
1359*2de962bdSlukem   [3]  International Telecommunications Union. The Directory:Selected
1360*2de962bdSlukem        Attribute Types.  ITU Recommendation X.520. August, 1997.
1361*2de962bdSlukem
1362*2de962bdSlukem   [4]  McLaughlin, L., "Line Printer Daemon Protocol, RFC 1179, August
1363*2de962bdSlukem        1990.
1364*2de962bdSlukem
1365*2de962bdSlukem   [5]  Guttman, E., Perkins, C., Veizades, J. and M. Day, "Service
1366*2de962bdSlukem        Location Protocol Version 2", RFC 2608, April 1999.
1367*2de962bdSlukem
1368*2de962bdSlukem   [6]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
1369*2de962bdSlukem        Specifications: ABNF", RFC 2234, November 1997.
1370*2de962bdSlukem
1371*2de962bdSlukem   [7]  Howes, T., "The String Representation of LDAP Search Filters",
1372*2de962bdSlukem        RFC 2254, December 1997.
1373*2de962bdSlukem
1374*2de962bdSlukem   [8]  Wahl, W., Coulbeck, A., Howe, T. and S. Kille, "Lightweight
1375*2de962bdSlukem        Directory Access Protocol (v3): Attribute Syntax Definition",
1376*2de962bdSlukem        RFC 2252, December 1997.
1377*2de962bdSlukem
1378*2de962bdSlukem   [9]  ITU-T Rec. X.680. Abstract Syntax Notation One (ASN.1) -
1379*2de962bdSlukem        Specification of Basic Notation. 1994.
1380*2de962bdSlukem
1381*2de962bdSlukem   [10] Fleming, P., Jones, K., Lewis, H., and McDonald, I., "Internet
1382*2de962bdSlukem        Printing Protocol (IPP): LDAP Schema for Printer Services", Work
1383*2de962bdSlukem        in Progress.
1384*2de962bdSlukem
1385*2de962bdSlukem   [11] Smith, M., "Definition of an X.500 Attribute Type and an Object
1386*2de962bdSlukem        Class to Hold Uniform Resource Identifiers (URIs)", RFC 2079,
1387*2de962bdSlukem        January 1997.
1388*2de962bdSlukem
1389*2de962bdSlukem   [12] Yaacovi, Y., Wahl, M. and T. Genovese, "Lightweight Directory
1390*2de962bdSlukem        Access Protocol (v3): Extensions for Dynamic Directory
1391*2de962bdSlukem        Services", RFC 2589, May 1999.
1392*2de962bdSlukem
1393*2de962bdSlukem   [13] Alvestrand, H., "Tags for the Identification of Languages", RFC
1394*2de962bdSlukem        1766, December 1997.
1395*2de962bdSlukem
1396*2de962bdSlukem   [14] Wahl, M. and T. Howes, "Use of Language Codes in LDAP", RFC
1397*2de962bdSlukem        2596, May 1999.
1398*2de962bdSlukem
1399*2de962bdSlukem
1400*2de962bdSlukem
1401*2de962bdSlukem
1402*2de962bdSlukemKempf, et al.                Informational                     [Page 25]
1403*2de962bdSlukem
1404*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1405*2de962bdSlukem
1406*2de962bdSlukem
1407*2de962bdSlukem   [15] Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
1408*2de962bdSlukem        "Authentication Methods for LDAP", RFC 2829, May 2000.
1409*2de962bdSlukem
1410*2de962bdSlukem   [16] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement
1411*2de962bdSlukem        Levels", BCP 14, RFC 2119, March 1997.
1412*2de962bdSlukem
1413*2de962bdSlukem   [17] Dubuisson, O. ASN.1: Communication between Heterogeneous
1414*2de962bdSlukem        Systems. OSS Nokalva, 2000.
1415*2de962bdSlukem
1416*2de962bdSlukem   [18] http://www.srvloc.org
1417*2de962bdSlukem
1418*2de962bdSlukem9.0 Authors' Addresses
1419*2de962bdSlukem
1420*2de962bdSlukem   James Kempf
1421*2de962bdSlukem   Sun Microsystems
1422*2de962bdSlukem   901 San Antonio Avenue
1423*2de962bdSlukem   Palo Alto, CA 94303
1424*2de962bdSlukem   USA
1425*2de962bdSlukem
1426*2de962bdSlukem   Phone: +1 650 786-5890
1427*2de962bdSlukem   EMail: james.kempf@sun.com
1428*2de962bdSlukem
1429*2de962bdSlukem
1430*2de962bdSlukem   Ryan Moats
1431*2de962bdSlukem   Coreon, Inc.
1432*2de962bdSlukem   15621 Drexel Circle
1433*2de962bdSlukem   Omaha, NE, 68135
1434*2de962bdSlukem   USA
1435*2de962bdSlukem
1436*2de962bdSlukem   EMail: rmoats@coreon.net
1437*2de962bdSlukem
1438*2de962bdSlukem
1439*2de962bdSlukem   Pete St. Pierre
1440*2de962bdSlukem   Sun Microsystems
1441*2de962bdSlukem   901 San Antonio Avenue
1442*2de962bdSlukem   Palo Alto, CA 94303
1443*2de962bdSlukem   USA
1444*2de962bdSlukem
1445*2de962bdSlukem   Phone: +1 415 786-5790
1446*2de962bdSlukem   EMail: Pete.StPierre@Eng.Sun.COM
1447*2de962bdSlukem
1448*2de962bdSlukem
1449*2de962bdSlukem
1450*2de962bdSlukem
1451*2de962bdSlukem
1452*2de962bdSlukem
1453*2de962bdSlukem
1454*2de962bdSlukem
1455*2de962bdSlukem
1456*2de962bdSlukem
1457*2de962bdSlukem
1458*2de962bdSlukemKempf, et al.                Informational                     [Page 26]
1459*2de962bdSlukem
1460*2de962bdSlukemRFC 2926               Conversion of LDAP Schemas         September 2000
1461*2de962bdSlukem
1462*2de962bdSlukem
1463*2de962bdSlukem10.  Full Copyright Statement
1464*2de962bdSlukem
1465*2de962bdSlukem   Copyright (C) The Internet Society (2000).  All Rights Reserved.
1466*2de962bdSlukem
1467*2de962bdSlukem   This document and translations of it may be copied and furnished to
1468*2de962bdSlukem   others, and derivative works that comment on or otherwise explain it
1469*2de962bdSlukem   or assist in its implementation may be prepared, copied, published
1470*2de962bdSlukem   and distributed, in whole or in part, without restriction of any
1471*2de962bdSlukem   kind, provided that the above copyright notice and this paragraph are
1472*2de962bdSlukem   included on all such copies and derivative works.  However, this
1473*2de962bdSlukem   document itself may not be modified in any way, such as by removing
1474*2de962bdSlukem   the copyright notice or references to the Internet Society or other
1475*2de962bdSlukem   Internet organizations, except as needed for the purpose of
1476*2de962bdSlukem   developing Internet standards in which case the procedures for
1477*2de962bdSlukem   copyrights defined in the Internet Standards process must be
1478*2de962bdSlukem   followed, or as required to translate it into languages other than
1479*2de962bdSlukem   English.
1480*2de962bdSlukem
1481*2de962bdSlukem   The limited permissions granted above are perpetual and will not be
1482*2de962bdSlukem   revoked by the Internet Society or its successors or assigns.
1483*2de962bdSlukem
1484*2de962bdSlukem   This document and the information contained herein is provided on an
1485*2de962bdSlukem   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
1486*2de962bdSlukem   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
1487*2de962bdSlukem   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
1488*2de962bdSlukem   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
1489*2de962bdSlukem   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1490*2de962bdSlukem
1491*2de962bdSlukemAcknowledgement
1492*2de962bdSlukem
1493*2de962bdSlukem   Funding for the RFC Editor function is currently provided by the
1494*2de962bdSlukem   Internet Society.
1495*2de962bdSlukem
1496*2de962bdSlukem
1497*2de962bdSlukem
1498*2de962bdSlukem
1499*2de962bdSlukem
1500*2de962bdSlukem
1501*2de962bdSlukem
1502*2de962bdSlukem
1503*2de962bdSlukem
1504*2de962bdSlukem
1505*2de962bdSlukem
1506*2de962bdSlukem
1507*2de962bdSlukem
1508*2de962bdSlukem
1509*2de962bdSlukem
1510*2de962bdSlukem
1511*2de962bdSlukem
1512*2de962bdSlukem
1513*2de962bdSlukem
1514*2de962bdSlukemKempf, et al.                Informational                     [Page 27]
1515*2de962bdSlukem
1516