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