mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
1516 lines
54 KiB
Plaintext
1516 lines
54 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group J. Kempf
|
||
Request for Comments: 2926 Sun Microsystems, Inc.
|
||
Category: Informational R. Moats
|
||
Coreon, Inc.
|
||
P. St. Pierre
|
||
Sun Microsystems, Inc.
|
||
September 2000
|
||
|
||
|
||
Conversion of LDAP Schemas to and from SLP Templates
|
||
|
||
Status of this Memo
|
||
|
||
This memo provides information for the Internet community. It does
|
||
not specify an Internet standard of any kind. Distribution of this
|
||
memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (2000). All Rights Reserved.
|
||
|
||
Abstract
|
||
|
||
This document describes a procedure for mapping between Service
|
||
Location Protocol (SLP) service advertisements and lightweight
|
||
directory access protocol (LDAP) descriptions of services. The
|
||
document covers two aspects of the mapping. One aspect is mapping
|
||
between SLP service type templates and LDAP directory schema.
|
||
Because the SLP service type template grammar is relatively simple,
|
||
mapping from service type templates to LDAP types is straightforward.
|
||
Mapping in the other direction is straightforward if the attributes
|
||
are restricted to use just a few of the syntaxes defined in RFC 2252.
|
||
If arbitrary ASN.1 types occur in the schema, then the mapping is
|
||
more complex and may even be impossible. The second aspect is
|
||
representation of service information in an LDAP directory. The
|
||
recommended representation simplifies interoperability with SLP by
|
||
allowing SLP directory agents to backend into LDAP directory servers.
|
||
The resulting system allows service advertisements to propagate
|
||
easily between SLP and LDAP.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 1]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
Table of Contents
|
||
|
||
1.0 Introduction ................................................ 2
|
||
2.0 Mapping SLP Templates to LDAP Schema ........................ 3
|
||
2.1 Mapping from SLP Attribute Types to LDAP Attribute Types .. 8
|
||
2.1.1 Integer ............................................... 8
|
||
2.1.2 String ................................................ 8
|
||
2.1.3 Boolean ............................................... 9
|
||
2.1.4 Opaque ................................................ 9
|
||
2.2 Keyword Attributes ........................................ 9
|
||
2.3 Template Flags ............................................ 9
|
||
2.3.1 Multi-valued .......................................... 9
|
||
2.3.2 Optional .............................................. 10
|
||
2.3.3 Literal ............................................... 10
|
||
2.3.4 Explicit Matching ..................................... 10
|
||
2.4 Default and Allowed Value Lists ........................... 10
|
||
2.5 Descriptive Text .......................................... 11
|
||
2.6 Generating LDAP Attribute OIDs ............................ 11
|
||
2.7 Example ................................................... 11
|
||
3.0 Attribute Name Conflicts .................................... 15
|
||
4.0 Mapping from Schema to Templates ............................ 15
|
||
4.1 Mapping LDAP Attribute Types to SLP Attribute Types ....... 16
|
||
4.2 Mapping ASN.1 Types to SLP Types .......................... 17
|
||
4.2.1 Integer ............................................... 18
|
||
4.2.2 Boolean ............................................... 18
|
||
4.2.3 Enumerated ............................................ 18
|
||
4.2.4 Object Identifier ..................................... 19
|
||
4.2.5 Octet String .......................................... 19
|
||
4.2.6 Real .................................................. 19
|
||
4.3 Example ASN.1 Schema ...................................... 19
|
||
5.0 Representing SLP Service Advertisements in an LDAP DIT ...... 22
|
||
6.0 Internationalization Considerations ......................... 24
|
||
7.0 Security Considerations ..................................... 24
|
||
8.0 References .................................................. 25
|
||
9.0 Authors' Addresses .......................................... 26
|
||
10.0 Full Copyright Statement ................................... 27
|
||
|
||
1.0 Introduction
|
||
|
||
SLP templates [1] are intended to create a simple encoding of the
|
||
syntactic and semantic conventions for individual service types,
|
||
their attributes, and conventions. They can easily be generated,
|
||
transmitted, read by humans and parsed by programs, as it is a string
|
||
based syntax with required comments. Directory schemas serve to
|
||
formalize directory entry structures for use with LDAP [2] These
|
||
directories serve to store information about many types of entities.
|
||
Network services are an example of one such entity.
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 2]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
Interoperability between SLP and LDAP is important so clients using
|
||
one protocol derive benefit from services registered through the
|
||
other. In addition, LDAP directory servers can serve as the backend
|
||
for SLP directory agents (DAs) if interoperability is possible In
|
||
order to facilitate interoperability, this document creates mappings
|
||
between the SLP template grammar and LDAP directory schema, and
|
||
establishes some conventions for representing service advertisements
|
||
in LDAP directories. The goal of the translation is to allow SLPv2
|
||
queries (which are syntactically and semantically equivalent to
|
||
LDAPv3 string queries [7]) to be submitted to an LDAP directory
|
||
server by an SLP DA backended into LDAP without extensive processing
|
||
by the DA.
|
||
|
||
The simple notation and syntactic/semantic attribute capabilities of
|
||
SLP templates map easily into directory schemas, and are easily
|
||
converted into directory schemas, even by automated means. The
|
||
reverse may not be true. If the LDAP schema contains attributes with
|
||
unrecognized or complex syntaxes, the translation may be difficult or
|
||
impossible. If, however, the LDAP schema only uses a few of the
|
||
common syntaxes defined in RFC 2252 [8], then the translation is more
|
||
straightforward. In addition, to foster complete bidirectionality,
|
||
the mapping must follow a very specific representation in its DESC
|
||
attributes.
|
||
|
||
This document outlines the correct mappings for SLP templates into
|
||
the syntactic representation specified for LDAP directory schema by
|
||
RFC 2252 [8]. This syntax is a subset of the ASN.1/BER described in
|
||
the X.209 specification [9], and is used by the LDAPv3 [2] directory
|
||
schema. Likewise, rules and guidelines are proposed to facilitate
|
||
consistent mapping of ASN.1 based schemas to be translated in the SLP
|
||
template grammar. Finally, a proposal for a representation of service
|
||
advertisements in LDAP directory services is made that facilitates
|
||
SLP interoperability.
|
||
|
||
Except when used as elements in the definition of LDAP schemas, the
|
||
key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||
document are to be interpreted as described in RFC 2119 [16].
|
||
|
||
2.0 Mapping SLP Templates to LDAP Schema
|
||
|
||
We define the following abstract object class as the parent class for
|
||
all services. Any specific service type is a subclass of this, with
|
||
its own attributes:
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 3]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.2.1
|
||
NAME 'slpService'
|
||
DESC 'parent superclass for SLP services'
|
||
ABSTRACT
|
||
SUP top
|
||
MUST ( template-major-version-number $
|
||
template-minor-version-number $
|
||
description $
|
||
template-url-syntax $
|
||
service-advert-service-type $
|
||
service-advert-scopes )
|
||
MAY ( service-advert-url-authenticator $
|
||
service-advert-attribute-authenticator ) )
|
||
|
||
The attributes correspond to various parts of the SLP service
|
||
template and SLP service advertisement.
|
||
|
||
SLP service type templates begin with four definitions that set the
|
||
context of the template:
|
||
|
||
template-type - This defines the service type of the template. The
|
||
service type can be a simple service type, like "service:ftp", an
|
||
abstract service type, like "service:printer" or a concrete
|
||
service type, like "service:printer:lpr". The type name can
|
||
additionally include a naming authority, for example
|
||
"service:printer.sun:local". The name that appears in this field
|
||
omits the "service:" prefix.
|
||
|
||
template-version - A string containing a major and minor version
|
||
number, separated by a period.
|
||
|
||
template-description - A block of human readable text describing
|
||
what the service type does.
|
||
|
||
template-url-syntax - An ABNF [6] grammar describing the service
|
||
type specific part of the service URL.
|
||
|
||
The SLP template-type definition is used as the name of the LDAP
|
||
object class for the template, a subclass of the "slpService" class,
|
||
together with the "service" prefix to indicate that the name is for a
|
||
service. In the translating service type name, colons and the period
|
||
separating the naming authority are converted into hyphens. If the
|
||
template defines an SLP concrete type, the concrete type name is
|
||
used; the abstract type name is never used. For example, the
|
||
template for "service:printer:lpr" is translated into an LDAP object
|
||
class called "service-printer-lpr". Furthermore, if the type name
|
||
contains a naming authority, the naming authority name must be
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 4]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
included. For example, the service type name
|
||
"service:printer.sun:local" becomes "service-printer-sun-local". The
|
||
LDAP object class is always "STRUCTURAL".
|
||
|
||
The template-version definition is partitioned into two attributes,
|
||
template-major-version-number and template-minor-version-number. The
|
||
LDAP definition for these attributes is:
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.1
|
||
NAME 'template-major-version-number'
|
||
DESC 'The major version number of the service type template'
|
||
EQUALITY integerMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.2
|
||
NAME 'template-minor-version-number'
|
||
DESC 'The minor version number of the service type template'
|
||
EQUALITY integerMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The template-url-syntax definition in the SLP template is described
|
||
by the following attribute:
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.3
|
||
NAME 'template-url-syntax'
|
||
DESC 'An ABNF grammar describing the service type
|
||
specific part of the service URL'
|
||
EQUALITY caseExactIA5Match
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
The template-description attribute is translated into the X.520
|
||
standard attribute "description" [3].
|
||
|
||
We further establish the convention that SLP template characteristics
|
||
that can't be translated into LDAP are inserted into the DESC field
|
||
of the object class definition. The items are separated by empty
|
||
lines (consisting of two "LINE FEED" characters), are preceded by a
|
||
LINE FEED character, and are tagged at the beginning of the line to
|
||
indicate what they represent. This allows the template to be
|
||
reconstructed from the schema by properly parsing the comments.
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 5]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
The bulk of an SLP template consists of attribute definitions. There
|
||
are four items in an SLP template attribute definition that need to
|
||
be mapped into LDAP:
|
||
|
||
Attribute Name - Since SLPv2 attribute names are defined to be
|
||
compatible with LDAPv3, SLP attributes map directly into LDAP
|
||
attributes with no change. Similarly, LDAP attributes map directly
|
||
to SLP attributes.
|
||
|
||
Attribute Type - The SLP attribute type is mapped into the LDAP
|
||
attribute type.
|
||
|
||
Attribute Flags - The SLP attribute flags are mapped into
|
||
characteristics of the LDAP attribute definition, or into the DESC
|
||
field if no equivalent LDAP attribute definition characteristic
|
||
occurs.
|
||
|
||
Default and Allowed Values - These must be handled by the client
|
||
or a DA enabled to handle templates, as in SLP. For reference,
|
||
however, they should be included in the DESC field of the LDAP
|
||
attribute definition.
|
||
|
||
Descriptive Text - The SLP template descriptive text should be
|
||
mapped into the DESC field.
|
||
|
||
We discuss mapping of types, flags, default and allowed values, and
|
||
descriptive text in the subsections below.
|
||
|
||
OIDs for SLP template conversion schema elements are standardized
|
||
under the enterprise number of SrvLoc.Org (6252) [18].
|
||
|
||
For purposes of representing an SLP entry, we also define two
|
||
standardized LDAP syntaxes and attributes with standardized OIDs.
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.2.2
|
||
DESC 'SLP Service Type'
|
||
)
|
||
|
||
Defines the syntax for the service type name. The syntax is defined
|
||
in the BNF for the service URL in RFC 2609 Section 2.1 [1].
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.2.3
|
||
DESC 'SLP Scope'
|
||
)
|
||
|
||
Defines the syntax for the scope name. The syntax is defined in the
|
||
BNF for scope names in RFC 2608 Section 6.4.1 [5].
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 6]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.4
|
||
NAME 'service-advert-service-type'
|
||
DESC 'The service type of the service advertisement, including
|
||
the "service:" prefix.'
|
||
EQUALITY caseExactIA5Match
|
||
SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.2
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
Defines an attribute for the service type name.
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.5
|
||
NAME 'service-advert-scopes'
|
||
DESC 'A list of scopes for a service advertisement.'
|
||
EQUALITY caseExactIA5Match
|
||
SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
|
||
)
|
||
|
||
Defines a multivalued attribute for the scopes.
|
||
|
||
Searches for abstract types can be made with an LDAP query that
|
||
wildcards the concrete type. For example, a search for all service
|
||
advertisements of the printer abstract type can be made with the
|
||
following query:
|
||
|
||
(service-advert-service-type=service:printer:*)
|
||
|
||
SLP specifies that service URLs and attribute lists can be
|
||
accompanied by a structured authenticator consisting of a digital
|
||
signature and information necessary to verify the signature. A
|
||
syntax and two standardized SLP attributes are defined for this
|
||
purpose:
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.2.3 DESC 'SLP Authenticator')
|
||
|
||
The syntax of an SLP authenticator is the bytes of the
|
||
authenticator in network byte order, see RFC 2608, Section 9.2
|
||
[5].
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.6
|
||
NAME 'service-advert-url-authenticator'
|
||
DESC 'The authenticator for the URL, null if none.'
|
||
SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
This attribute contains the SLP URL authenticator, as defined in
|
||
RFC 2608, Section 9.2 [5].
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 7]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
( 1.3.6.1.4.1.6252.2.27.6.1.7
|
||
NAME 'service-advert-attribute-authenticator'
|
||
DESC 'The authenticator for the attribute list, null if none.'
|
||
SYNTAX 1.3.6.1.4.1.6252.2.27.6.2.3
|
||
SINGLE_VALUE
|
||
)
|
||
|
||
This attribute contains the SLP attribute authenticator, as
|
||
defined in RFC 2608, Section 9.2 [5].
|
||
|
||
2.1 Mapping from SLP Attribute Types to LDAP Attribute Types
|
||
|
||
We define the mapping from SLP attribute types to LDAP as follows:
|
||
|
||
SLP Type ASN.1 Type LDAP Type
|
||
---------------------------------------------------
|
||
Integer INTEGER INTEGER
|
||
String DirectoryString Directory String
|
||
Boolean BOOLEAN Boolean
|
||
Opaque OCTET STRING Octet String
|
||
Keyword (N/A) IA5 String
|
||
|
||
The following subsections discuss further details of the mapping.
|
||
|
||
2.1.1 Integer
|
||
|
||
SLP integers compare as integers when performing a query. LDAP
|
||
integers behave similarly. Consequently, the mapping from the SLP
|
||
integer type to LDAP is INTEGER, with the integerMatch matching rule.
|
||
|
||
2.1.2 String
|
||
|
||
SLP strings are encoded as described in the SLP protocol
|
||
specification [5]. All value strings are considered case insensitive
|
||
for matching operations. SLP strings are not null terminated and are
|
||
encoded in UTF-8.
|
||
|
||
SLP strings are mapped to the LDAP Directory String type. The
|
||
Directory String type exactly matches the SLP string type, i.e. it is
|
||
a non-null terminated UTF-8 string. The caseIgnoreMatch equality
|
||
rule, caseIgnoreOrderingMatch ordering rule, and
|
||
caseIgnoreSubstringsMatch substring rule are used for comparing
|
||
string attribute values.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 8]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
2.1.3 Boolean
|
||
|
||
Boolean attributes may have one of two possible values. In SLP,
|
||
these values are represented as strings, TRUE and FALSE. In SLP's
|
||
string encoding of a boolean value, case does not matter.
|
||
|
||
The SLP Boolean type maps directly into an LDAP BOOLEAN. The
|
||
caseIgnoreMatch rule is used for equality matching.
|
||
|
||
2.1.4 Opaque
|
||
|
||
SLP attribute values of type Opaque are represented as OCTET STRING
|
||
in LDAP, and the octetStringMatch matching rule is used to compare
|
||
them.
|
||
|
||
2.2 Keyword Attributes
|
||
|
||
SLP service type templates allow the definition of keyword
|
||
attributes. Keyword attributes are attributes whose only
|
||
characteristic is their presence. Keyword attributes have no flag
|
||
information, nor any default or allowed values (since, by definition,
|
||
they have no values).
|
||
|
||
ASN.1 has no concept of keyword attributes. Keyword attributes are
|
||
translated into a "May" clause in the ASN.1 class definition for the
|
||
service type. If the keyword attribute is present, then its value is
|
||
of no consequence, but for consistency we make it simply the NUL
|
||
character, "\00".
|
||
|
||
2.3 Template Flags
|
||
|
||
SLP template flags can be handled as described in the following
|
||
subsections.
|
||
|
||
2.3.1 Multi-valued
|
||
|
||
Multi-valued attributes are defined in an SLP template using the one
|
||
value. All values for a given attribute must be of the same type.
|
||
|
||
LDAP attribute definitions require that a single valued attribute
|
||
include the SINGLE-VALUE tag if the attribute is single valued.
|
||
Otherwise, the attribute is assumed to be multivalued by default.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 9]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
2.3.2 Optional
|
||
|
||
SLP uses the 'O' flag to indicate an attribute may or may not be
|
||
present. These optional attributes are defined using the "May"
|
||
clause in the ASN.1 definition class definition for the service type.
|
||
All other attributes must be defined as a "Must".
|
||
|
||
2.3.3 Literal
|
||
|
||
ASN.1 does not have a mechanism to indicate that the values of an
|
||
attribute may not be translated from one language to another, since
|
||
ASN.1 schema are not typically translated. This flag is dropped when
|
||
translating a template, but presence of the flag should be noted in
|
||
the DESC field. It should be placed on a separate line and tagged
|
||
with "Literal:" so the template can be reconstructed from the schema.
|
||
|
||
2.3.4 Explicit Matching
|
||
|
||
The SLP template syntax uses a flag of 'X' to indicate that an
|
||
attribute must be present in order for the query to be properly
|
||
satisfied. There is no provision for requiring that particular
|
||
attributes be in a query. Consequently, this flag is dropped when
|
||
translating a template, but presence of the flag should be noted in
|
||
the DESC field. It should be placed on a separate line and tagged
|
||
with "Explicit:" so the template can be reconstructed from the
|
||
schema.
|
||
|
||
2.4 Default and Allowed Value Lists
|
||
|
||
The SLP template grammar provides the capability to define default
|
||
and allowed values for an attribute. The SLP protocol does not
|
||
enforce these restrictions on registered attributes, however. The
|
||
default and allowed values may be used by client side applications,
|
||
or alternatively it may also be used by DAs to initialize
|
||
registrations having no attributes and to limit attribute values to
|
||
the template allowed values.
|
||
|
||
LDAP servers also do not support default and allowed values on
|
||
attributes. Therefore, enforcement of default and allowed values in
|
||
SLP templates is left up to the clients or a DA, if the DA is
|
||
backending into LDAP. The default and allowed values should be
|
||
included in the DESC field. The comments should be placed on separate
|
||
lines and labeled with the "Default:" and "Allowed:" tags to allow
|
||
reconstruction of the template.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 10]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
2.5 Descriptive Text
|
||
|
||
The descriptive text associated with an attribute definition should
|
||
be included in the DESC field. It should start on a separate line and
|
||
begin with the "Description:" tag.
|
||
|
||
2.6 Generating LDAP Attribute OIDs
|
||
|
||
LDAP attributes require an OID. In general, there is no a priori way
|
||
that an algorithm can be defined for generating OIDs, because it will
|
||
depend on the conventions used by the organization developing the
|
||
template. In some cases, an organization's procedure for generating
|
||
OIDs may be regular enough that a template developer can
|
||
algorithmically generate OIDs off of an assigned root. Whatever means
|
||
is used, the template developer should assure that unique OIDs are
|
||
assigned to each SLP attribute that is translated into an LDAP
|
||
attribute.
|
||
|
||
2.7 Example
|
||
|
||
The template included below is a hypothetical abstract printer
|
||
service template, similar to that described in [10].
|
||
|
||
template-type = printer
|
||
|
||
template-version = 0.0
|
||
|
||
template-description =
|
||
The printer service template describes the attributes supported by
|
||
network printing devices. Devices may be either directly
|
||
connected to a network, or connected to a printer spooler that
|
||
understands the a network queuing protocol such as IPP, lpr or the
|
||
Salutation Architecture.
|
||
|
||
template-url-syntax =
|
||
;The URL syntax is specific to the printing protocol being
|
||
;employed
|
||
|
||
description = STRING
|
||
# This attribute is a free form string that can contain any
|
||
# site-specific descriptive information about this printer.
|
||
|
||
printer-security-mechanisms-supported = STRING L M
|
||
none
|
||
# This attribute indicates the security mechanisms supported
|
||
tls, ssl, http-basic, http-digest, none
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 11]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
printer-operator = STRING O L M
|
||
# A person, or persons responsible for maintaining a
|
||
# printer on a day-to-day basis, including such tasks
|
||
# as filling empty media trays, emptying full output
|
||
# trays, replacing toner cartridges, clearing simple
|
||
# paper jams, etc.
|
||
|
||
printer-location-address = STRING O
|
||
# Physical/Postal address for this device. Useful for
|
||
# nailing down a group of printers in a very large corporate
|
||
# network. For example: 960 Main Street, San Jose, CA 95130
|
||
|
||
printer-priority-queue = BOOLEAN O
|
||
FALSE
|
||
# TRUE indicates this printer or print queue is a priority
|
||
# queuing device.
|
||
|
||
printer-number-up = INTEGER O
|
||
1
|
||
# This job attribute specifies the number of source
|
||
# page-images to impose upon a single side of an instance
|
||
# of a selected medium.
|
||
1, 2, 4
|
||
|
||
printer-paper-output = STRING M L O
|
||
standard
|
||
# This attribute describes the mode in which pages output
|
||
# are arranged.
|
||
|
||
standard, noncollated sort, collated sort, stack, unknown
|
||
|
||
We assume that the concrete type "service:printer:lpr" for printers
|
||
that speak the LPR protocol [4] has the following template
|
||
definition:
|
||
|
||
template-type = printer:lpr
|
||
|
||
template-version = 0.0
|
||
|
||
template-description =
|
||
The printer:lpr service template describes the attributes
|
||
supported by network printing devices that speak the
|
||
LPR protocol. No new attributes are included.
|
||
|
||
template-url-syntax = queue
|
||
queue = ;The queue name, see RFC 1179.
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 12]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
The LDAP class definition for the "service:printer:lpr" concrete
|
||
service type is translated as follows:
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'service-printer-lpr'
|
||
DESC 'Description: The printer:lpr service template
|
||
describes the attributes supported by network printing
|
||
devices that speak the LPR protocol. No new attributes
|
||
are included.
|
||
|
||
URL Syntax: queue
|
||
queue = ;The queue name, see RFC 1179.'
|
||
SUP slpService
|
||
MUST ( description $ security-mechanisms-supported $
|
||
labeledURI)
|
||
MAY ( operator $ location-address $ priority-queue $
|
||
number-up $ paper-output)
|
||
)
|
||
|
||
The attribute definitions are translated as follows:
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'printer-security-mechanisms-supported'
|
||
DESC 'Description: This attribute indicates the security mechanisms
|
||
supported.
|
||
|
||
Default: value
|
||
|
||
Allowed: tls, ssl, http-basic, http-digest, none
|
||
|
||
Literal:'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
)
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'printer-operator'
|
||
DESC 'Description: A person, or persons responsible for
|
||
maintaining a printer on a day-to-day basis, including
|
||
such tasks as filling empty media trays, emptying full
|
||
output trays, replacing toner cartridges, clearing simple
|
||
paper jams, etc.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 13]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
Literal:'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
)
|
||
|
||
( --place the assigned OID here---
|
||
NAME 'printer-location-address'
|
||
DESC 'Description Physical/Postal address for this device.
|
||
Useful for nailing down a group of printers in a very
|
||
large corporate network. For example: 960 Main Street,
|
||
San Jose, CA 95130.'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'printer-priority-queue'
|
||
DESC 'Description: TRUE indicates this printer or print
|
||
queue is a priority queuing device.'
|
||
EQUALITY booleanMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'printer-number-up'
|
||
DESC 'Description: This job attribute specifies the number
|
||
of source page-images to impose upon a single side of
|
||
an instance of a selected medium. This attribute is
|
||
INTEGER.
|
||
|
||
Default: 1
|
||
|
||
Allowed: 1, 2, 3, 4'
|
||
EQUALITY integerMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
|
||
SINGLE-VALUE
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 14]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
( ---place the assigned OID here---
|
||
NAME 'printer-paper-output'
|
||
DESC 'Description: This attribute describes the mode in
|
||
which pages output are arranged. Default value is
|
||
standard.
|
||
|
||
Default: standard
|
||
|
||
Allowed: standard, noncollated sort, collated sort,
|
||
stack, unknown.
|
||
Literal:'
|
||
EQUALITY caseIgnoreMatch
|
||
ORDERING caseIgnoreOrderingMatch
|
||
SUBSTR caseIgnoreSubstringsMatch
|
||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||
)
|
||
|
||
3.0 Attribute Name Conflicts
|
||
|
||
LDAP has a flat name space, and attribute names and OIDs must be
|
||
unique in a directory server. In order to avoid name conflicts in the
|
||
translation of SLP templates to LDAP schemas, template developers may
|
||
want to consider prepending the name of the service type to the
|
||
attribute. Postprocessing attribute names to make them unique when
|
||
translated is not possible, because it would require the DA to
|
||
rewrite queries before submitting them to the directory server. In
|
||
addition, developers should use standard LDAP attributes when such
|
||
attributes are available.
|
||
|
||
In the above example template, the abstract type name "printer" is
|
||
prepended to attributes to avoid conflicts. The standard
|
||
"description" attribute defined by X.520 [3] is used to translate the
|
||
template description attribute.
|
||
|
||
4.0 Mapping from Schema to Templates
|
||
|
||
The reverse mapping from LDAP schema to SLP service type templates
|
||
requires dealing with both LDAP and ASN.1 data types. RFC 2252
|
||
defines 33 attribute syntaxes that should be supported by LDAP
|
||
directory servers. These syntaxes are defined using BNF for strings
|
||
or using ASN.1 for binary valued attributes defined by X.520.
|
||
|
||
Mapping of the LDAP data types into SLP template types is fairly
|
||
straightforward, but mapping arbitrary ASN.1 data types is somewhat
|
||
more complicated and requires encoding the ASN.1 data type into a
|
||
string. To a certain extent, this masks the ASN.1 data type because
|
||
it becomes impossible to distinguish between a native string having
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 15]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
content equivalent to an encoded ASN.1 string. However, inclusion of
|
||
the ASN.1 data type in the comment provides additional information
|
||
should a reverse transformation from SLP to ASN.1 be required.
|
||
|
||
The following subsections deal with both LDAP and ASN.1 attribute
|
||
data type mappings.
|
||
|
||
4.1 Mapping LDAP Attribute Syntaxes to SLP Attribute Types
|
||
|
||
The following table contains the mappings for LDAP syntaxes to SLP
|
||
data types:
|
||
|
||
LDAP Type SLP Type
|
||
--------------------------------------------------------
|
||
ACI Item NA
|
||
Access Point NA
|
||
Attribute Type Description NA
|
||
Audio Opaque
|
||
Binary ASN.1 escape
|
||
Bit String String
|
||
Boolean Boolean
|
||
Certificate Opaque
|
||
Certificate List Opaque
|
||
Certificate Pair Opaque
|
||
Country String String
|
||
DN String
|
||
Data Quality Syntax NA
|
||
Delivery Method NA
|
||
Directory String String
|
||
DIT Content Rule Description NA
|
||
DIT Structure Rule Description NA
|
||
DL Submit Permission NA
|
||
DSA Quality Syntax NA
|
||
Enhanced Guide NA
|
||
Facsimile Telephone Number String
|
||
Fax Opaque
|
||
Generalized Time String
|
||
Guide NA
|
||
IA5 String String
|
||
INTEGER Integer
|
||
JPEG Opaque
|
||
LDAP Syntax Description NA
|
||
LDAP Schema Definition NA
|
||
LDAP Schema Description NA
|
||
Master and Shadow Access Points NA
|
||
Matching Rule Description NA
|
||
Matching Rule Use Description NA
|
||
Mail Preference NA
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 16]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
MHS OR Address String
|
||
Modify Rights NA
|
||
Name and Optional UID NA
|
||
Name Form Description NA
|
||
Numeric String String
|
||
Object Class Description NA
|
||
Octet String Opaque
|
||
OID String
|
||
Other Mailbox String
|
||
Postal Address String
|
||
Protocol Information NA
|
||
Presentation Address String
|
||
Printable String String
|
||
Substring Assertion NA
|
||
Subtree Specification NA
|
||
Supplier Information NA
|
||
Supplier or Consumer NA
|
||
Supplier And Consumer NA
|
||
Supported Algorithm NA
|
||
DSE Type NA
|
||
Telephone Number String
|
||
Teletex Terminal Identifier String
|
||
Telex Number String
|
||
UTC Time String
|
||
|
||
4.2 Mapping ASN.1 Types to SLP Types
|
||
|
||
ASN.1 employs a much richer set of data types than provided by SLP.
|
||
The table below show the mapping of selected ASN.1 data type to their
|
||
nearest SLP equivalent. Because of the complexity and flexibility of
|
||
ASN.1, a complete list cannot be provided.
|
||
|
||
As sample of some ASN.1 encodings and their mappings to SLP:
|
||
|
||
ASN.1 type SLP type
|
||
-----------------------------------------
|
||
INTEGER Integer
|
||
BOOLEAN Boolean
|
||
ENUMERATED String
|
||
OBJECT IDENTIFIER String
|
||
OCTET STRING Opaque
|
||
REAL String
|
||
|
||
Data types that do not map directly to SLP data types should be
|
||
defined as either a String, or as Opaque. ASN.1 types that may only
|
||
contain valid characters for Strings, as defined in X.680 [9] should
|
||
be encoded as strings. ASN.1 types such as GraphicString that change
|
||
their character set encoding in part way through a value should not
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 17]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
be encoded as strings, however, If such types are required, the SLP
|
||
Opaque type should be used. In either case, the first line of the
|
||
help text is used to indicate the original ASN.1 data type.
|
||
|
||
The following subsections describe how to convert from the ASN.1 BER
|
||
[9] to the SLP template for the different types in the table above.
|
||
|
||
4.2.1 Integer
|
||
|
||
Both SLP templates and ASN.1 support Integers, so there is a one to
|
||
one mapping between an SLP Integer attribute and an ASN.1 Integer
|
||
attribute. Details on the encoding of integers is summarized in the
|
||
SLP template to ASN.1 section above.
|
||
|
||
4.2.2 Boolean
|
||
|
||
Boolean values are supported by both SLP and ASN.1, though on wire
|
||
encodings differ. X.680 [9] specifies zero and non-zero encoding for
|
||
booleans, where SLP encodes booleans using the strings TRUE and
|
||
FALSE. In general, most LDAP servers will use the LDAP Boolean type
|
||
(which is a string), so again the ASN.1 type should be recorded in
|
||
the comment or it will be lost.
|
||
|
||
4.2.3 Enumerated
|
||
|
||
SLP templates support the concept of enumerations through the listing
|
||
of allowed values in the attribute definition. These enumerations
|
||
are not strictly binding on clients or DAs, but they are similar to
|
||
the ASN.1 definition of enumerations. BER encodes the ASN.1
|
||
enumeration by passing the number of the element's position in the
|
||
enumeration. This requires both sides to have knowledge of the
|
||
specific enumeration prior to decoding an enumeration's value. SLP
|
||
provides no specific support for transmitting enumerations. They are
|
||
simply String types. Information on the ASN.1 type and ASN.1 encoding
|
||
of the enumeration values is recorded in the comment.
|
||
|
||
Example:
|
||
|
||
color-supported = STRING M
|
||
none
|
||
# ASN.1: Enumeration.
|
||
# ASN.1 Mapping: none = 0, highlight = 1, three color = 2,
|
||
# four color = 4, monochromatic = 5
|
||
#This attribute specifies whether the Printer supports
|
||
# color and, if so, what type.
|
||
none,highlight,three color,four color,monochromatic
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 18]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
4.2.4 Object Identifier
|
||
|
||
Object identifiers(OIDs) are commonly used in the ASN.1 world to
|
||
identify object and attributes. OIDs are a numerical representation
|
||
of an element's place in the naming hierarchy. Each element at a
|
||
particular level of a hierarchy has a unique number assigned within
|
||
that level of the hierarchy. A sample OID would be the naming tree
|
||
for SNMP MIBs: iso(1) org(3) dod(6) internet(1) mgmt(2) mib(1) would
|
||
be written as the string "1.3.6.1.2.1".
|
||
|
||
Because this representation reduces down to a string of dot separated
|
||
numbers, this maps easily to the SLP String type. The help text for
|
||
this element should indicate it is an ASN.1 OID
|
||
|
||
identifier = STRING
|
||
# ASN.1: OID
|
||
# The object identifier for this SNMP agent.
|
||
|
||
4.2.5 Octet String
|
||
|
||
An ASN.1 octet string should be mapped to an Opaque in an SLP
|
||
template. An octet string is a sequence of bytes, whereas an Opaque
|
||
is a a string that encodes a sequence of bytes. Again, the ASN.1 type
|
||
is lost unless recorded in the comment.
|
||
|
||
4.2.6 Real
|
||
|
||
There is no direct mapping between floating point numbers and any SLP
|
||
data types. Attributes having the ASN.1 type of Real are mapped to
|
||
SLP type String. Comments are added to the attribute help text
|
||
indicating the value was originally an ASN.1 real. For example:
|
||
|
||
weight = STRING
|
||
# ASN.1: Real
|
||
# The objects weight in pounds.
|
||
|
||
4.3 Example ASN.1 Schema
|
||
|
||
The following is an example schema for an exported filesystem. The
|
||
section presents it as in ASN.1 and the following section shows the
|
||
SLP template translation. The template translation does not capture
|
||
the actual attribute format for the Set type, that would be done in
|
||
the LDAP client software making the translation. Note that even
|
||
though the class definition does not conform with the previously
|
||
defined conventions for SLP classes, the schema can still be
|
||
translated into an SLP template. The syntax used in this example
|
||
follows
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 19]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
-- Abstraction of a fstab entry (a "mount").
|
||
-- These lookups would likely be performed by an
|
||
-- an automounter type application.
|
||
mount OBJECT-CLASS ::= {
|
||
SUBCLASS OF { top }
|
||
MUST CONTAIN { mountHost |
|
||
mountDirectory |
|
||
mountType
|
||
}
|
||
MAY CONTAIN { mountOption |
|
||
mountDumpFrequency |
|
||
mountPassNo
|
||
}
|
||
ID { <oid1> }
|
||
}
|
||
|
||
|
||
- The mount host.
|
||
mountHost ATTRIBUTE ::= {
|
||
WITH SYNTAX caseIgnoreString
|
||
EQUALITY MATCHING RULE caseIgnoreMatch
|
||
SINGLE VALUE
|
||
ID { <oid2> }
|
||
}
|
||
|
||
|
||
- The file system to mount.
|
||
mountDirectory ATTRIBUTE ::= {
|
||
WITH SYNTAX caseIgnoreString
|
||
EQUALITY MATCHING RULE caseIgnoreMatch
|
||
SINGLE VALUE
|
||
ID { <oid3> }
|
||
}
|
||
|
||
- The type of file system being mounted.
|
||
mountType ATTRIBUTE ::= {
|
||
WITH SYNTAX INTEGER { ufs(1),
|
||
hsfs(2),
|
||
nfs(3),
|
||
rfs(4)
|
||
}
|
||
EQUALITY MATCHING RULE integerMatch
|
||
SINGLE VALUE
|
||
ID { <oid4> }
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 20]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
- Options for the mount operation.
|
||
mountOption ATTRIBUTE ::= {
|
||
WITH SYNTAX caseIgnoreString
|
||
EQUALITY MATCHING RULE caseIgnoreString
|
||
ID { <oid5> }
|
||
}
|
||
|
||
|
||
- How often to dump the file system.
|
||
mountDumpFrequency ATTRIBUTE :: = {
|
||
WITH SYNTAX INTEGER (0..9)
|
||
EQUALITY MATCHING RULE integerMatch
|
||
SINGLE VALUE
|
||
ID { <oid6> }
|
||
}
|
||
|
||
- Boot time mount pass number.
|
||
mountPassNo ATTRIBUTE ::= {
|
||
WITH SYNTAX INTEGER
|
||
EQUALITY MATCHING RULE integerMatch
|
||
SINGLE VALUE
|
||
ID { <oid7> }
|
||
}
|
||
|
||
The translated SLP template is:
|
||
|
||
template-type = mount
|
||
|
||
template-version = 1.0
|
||
|
||
template-description = "Describes a remote filesystem access
|
||
protocol"
|
||
|
||
template-url-syntax =
|
||
filesystem = 1*[ DIGIT / ALPHA ]
|
||
urlpath = "/" filesystem
|
||
|
||
mountHost = STRING L
|
||
# ASN.1: Case Ignore String, Single Value
|
||
# The mount host
|
||
|
||
mountDirectory = STRING L
|
||
# ASN.1: Case Ignore String, Single Value
|
||
# The filesystem to mount
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 21]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
mountType = STRING L
|
||
ufs
|
||
# ASN.1: Enumeration, Single Value
|
||
# ASN.1 Mapping: ufs = 1, hsfs = 2, nfs = 3, rfs = 4
|
||
# The type of the filesystem being mounted
|
||
ufs, hsfs, nfs, rfs
|
||
|
||
mountOption = STRING M O L
|
||
# ASN.1: Case Ignore String
|
||
# mount options for this filesystem
|
||
|
||
mountDumpFrequency = INTEGER O
|
||
0
|
||
# ASN.1: Integer Range, Single Value
|
||
# How often to dump this filesystem
|
||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
||
|
||
mountPassNo = INTEGER O
|
||
# ASN.1: Integer, Single Value
|
||
# Boot time mount pass number
|
||
|
||
5.0 Representing SLP Service Advertisements in an LDAP DIT
|
||
|
||
In addition to translating between SLP templates and LDAP schema,
|
||
another area requiring compatibility is the representation of SLP
|
||
service advertisements in an LDAP DIT. A standardized representation
|
||
for service information allows SLP DAs to store service
|
||
advertisements in LDAP, and for LDAP clients to query the DIT for
|
||
those services. Similarly, if LDAP clients represent service
|
||
information in the same form, SLP clients can benefit from
|
||
interoperability.
|
||
|
||
A service advertisement contains the service URL in a 'labeledURI'
|
||
attribute [11]. The labeledURI attribute in a service advertisement
|
||
should only contain the service URL for the service, with no
|
||
additional label. It is recommended that the labeledURI be used as
|
||
the RDN for the service object in the DIT.
|
||
|
||
Although service advertisements can appear anywhere within the DIT,
|
||
it is recommended that all services be stored under a single common
|
||
point, or root node, to facilitate searching in a domain. This allows
|
||
a client to search for all of advertisements of a particular service
|
||
type, say, for all printers. The recommended parent entry is one
|
||
named "ou=service" below the entry which is the representation of the
|
||
domain, as described in RFC 2247.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 22]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
For example, a printer service with labeledURI of
|
||
"service:lpr://printsrv/queue1" in the domain foobar.com advertised
|
||
in the LDAP server that holds the entry "dc=foobar,dc=com" tree has
|
||
the following DN:
|
||
|
||
"labeledURI=service:lpr://printsrv/queue1, ou=service, dc=foobar,
|
||
dc=com"
|
||
|
||
While this leads to a flat space of service storage, since SLP uses
|
||
search filters from LDAP for searches, these filters can be used for
|
||
one-level searches from the root node.
|
||
|
||
The following example illustrates how an advertisement having a
|
||
simple service type is represented. The advertisement (in conceptual
|
||
form) for a printer is:
|
||
|
||
Service Type: service:lpr://printsrv/queue1
|
||
Scopes: eng,corp
|
||
Attributes:
|
||
description = A general printer for all to use.
|
||
security-mechanisms-supported = none
|
||
Authentication: none
|
||
|
||
The RDN of the object is labeledURI=service:lpr://printsrv/queue1,
|
||
and the following LDAP search filter will return this object, along
|
||
with any others of the service type "service:lpr" that match the
|
||
other attributes:
|
||
|
||
(&(service-advert-service-type=service:lpr)
|
||
(service-advert-scopes=eng)
|
||
(service-advert-scopes=corp)
|
||
(description=A general printer for all to use.)
|
||
(security-mechanisms-supported=none))
|
||
|
||
Service advertisements in SLP also have a lease time associated with
|
||
them. In LDAP servers that support the extensions for dynamic
|
||
directory services [12], the service advertisement entry objectClass
|
||
should be extended with the dynamicObject class. This allows the
|
||
service advertisement to time out within the LDAP directory server.
|
||
If the LDAP directory server does not support the dynamic directory
|
||
services extension, then advertisement lease timeouts must be handled
|
||
by the SLP agent.
|
||
|
||
While the service advertisement schema outlined in this section is
|
||
primarily for SLP DAs that use LDAP as a backing store, if LDAP
|
||
agents register services using the same format, complete
|
||
interoperability with SLP is achieved.
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 23]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
6.0 Internationalization Considerations
|
||
|
||
SLP specifies that an RFC 1766 [13] language code accompanies every
|
||
service advertisement. Language codes for service advertisements in
|
||
LDAP must be represented according to RFC 2596 [14].
|
||
|
||
RFC 2596 prohibits language codes in DNs, and specifies that a
|
||
directory server which does not support language codes must treat an
|
||
attribute with a language code as an unrecognized attributes.
|
||
According to RFC 2596, language codes are appended to attribute names
|
||
with a semicolon (";"). For example, the following attribute/value
|
||
pair is in the German locale:
|
||
|
||
(address;lang-de=44 Bahnhofstrasse, 2365 Weibstadt, Deutschland)
|
||
|
||
An attribute with a language tag in a specific locale is considered a
|
||
separate attribute from attributes in other locales.
|
||
|
||
If the service advertisement is in the default SLP locale ("en", no
|
||
dialect), then the language code need not be appended to the
|
||
attribute name.
|
||
|
||
SLP queries in locales other than the default need not be rewritten
|
||
to include language tags before being submitted to the directory
|
||
server. RFC 2596 specifies that all entries that match are returned,
|
||
including those with language tags, without requiring the language
|
||
tags to be explicitly present in the query. The SLP DA can then
|
||
postprocess the result to select the entries from the required
|
||
locale.
|
||
|
||
7.0 Security Considerations
|
||
|
||
SLP authenticators are stored with the service advertisement in the
|
||
DIT, as discussed in Section~7ef{slpdit}. LDAP clients need to use
|
||
LDAP authentication [15] to assure that they are connecting with a
|
||
secure server. In particular, SLP DAs that use LDAP as a back end
|
||
store and that implement SLP authentication MUST use LDAP
|
||
authentication to assure that the LDAP entries for their service
|
||
registrations are secure.
|
||
|
||
Acknowledgements
|
||
|
||
Many thanks are due to Mark Wahl whose detailed and insightful
|
||
comments were instrumental in helping improve the technical accuracy
|
||
of this document with respect to LDAP.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 24]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
8.0 References
|
||
|
||
[1] Guttman, E., Perkins, C. and J. Kempf, "Service Templates and
|
||
service: Schemes", RFC 2609, April 1999.
|
||
|
||
[2] Wahl, W., Howes, T. and S. Kille, "Lightweight Directory Access
|
||
Protocol (v3)", RFC 2251, December 1997.
|
||
|
||
[3] International Telecommunications Union. The Directory:Selected
|
||
Attribute Types. ITU Recommendation X.520. August, 1997.
|
||
|
||
[4] McLaughlin, L., "Line Printer Daemon Protocol, RFC 1179, August
|
||
1990.
|
||
|
||
[5] Guttman, E., Perkins, C., Veizades, J. and M. Day, "Service
|
||
Location Protocol Version 2", RFC 2608, April 1999.
|
||
|
||
[6] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
||
Specifications: ABNF", RFC 2234, November 1997.
|
||
|
||
[7] Howes, T., "The String Representation of LDAP Search Filters",
|
||
RFC 2254, December 1997.
|
||
|
||
[8] Wahl, W., Coulbeck, A., Howe, T. and S. Kille, "Lightweight
|
||
Directory Access Protocol (v3): Attribute Syntax Definition",
|
||
RFC 2252, December 1997.
|
||
|
||
[9] ITU-T Rec. X.680. Abstract Syntax Notation One (ASN.1) -
|
||
Specification of Basic Notation. 1994.
|
||
|
||
[10] Fleming, P., Jones, K., Lewis, H., and McDonald, I., "Internet
|
||
Printing Protocol (IPP): LDAP Schema for Printer Services", Work
|
||
in Progress.
|
||
|
||
[11] Smith, M., "Definition of an X.500 Attribute Type and an Object
|
||
Class to Hold Uniform Resource Identifiers (URIs)", RFC 2079,
|
||
January 1997.
|
||
|
||
[12] Yaacovi, Y., Wahl, M. and T. Genovese, "Lightweight Directory
|
||
Access Protocol (v3): Extensions for Dynamic Directory
|
||
Services", RFC 2589, May 1999.
|
||
|
||
[13] Alvestrand, H., "Tags for the Identification of Languages", RFC
|
||
1766, December 1997.
|
||
|
||
[14] Wahl, M. and T. Howes, "Use of Language Codes in LDAP", RFC
|
||
2596, May 1999.
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 25]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
[15] Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
|
||
"Authentication Methods for LDAP", RFC 2829, May 2000.
|
||
|
||
[16] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement
|
||
Levels", BCP 14, RFC 2119, March 1997.
|
||
|
||
[17] Dubuisson, O. ASN.1: Communication between Heterogeneous
|
||
Systems. OSS Nokalva, 2000.
|
||
|
||
[18] http://www.srvloc.org
|
||
|
||
9.0 Authors' Addresses
|
||
|
||
James Kempf
|
||
Sun Microsystems
|
||
901 San Antonio Avenue
|
||
Palo Alto, CA 94303
|
||
USA
|
||
|
||
Phone: +1 650 786-5890
|
||
EMail: james.kempf@sun.com
|
||
|
||
|
||
Ryan Moats
|
||
Coreon, Inc.
|
||
15621 Drexel Circle
|
||
Omaha, NE, 68135
|
||
USA
|
||
|
||
EMail: rmoats@coreon.net
|
||
|
||
|
||
Pete St. Pierre
|
||
Sun Microsystems
|
||
901 San Antonio Avenue
|
||
Palo Alto, CA 94303
|
||
USA
|
||
|
||
Phone: +1 415 786-5790
|
||
EMail: Pete.StPierre@Eng.Sun.COM
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 26]
|
||
|
||
RFC 2926 Conversion of LDAP Schemas September 2000
|
||
|
||
|
||
10. Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (2000). All Rights Reserved.
|
||
|
||
This document and translations of it may be copied and furnished to
|
||
others, and derivative works that comment on or otherwise explain it
|
||
or assist in its implementation may be prepared, copied, published
|
||
and distributed, in whole or in part, without restriction of any
|
||
kind, provided that the above copyright notice and this paragraph are
|
||
included on all such copies and derivative works. However, this
|
||
document itself may not be modified in any way, such as by removing
|
||
the copyright notice or references to the Internet Society or other
|
||
Internet organizations, except as needed for the purpose of
|
||
developing Internet standards in which case the procedures for
|
||
copyrights defined in the Internet Standards process must be
|
||
followed, or as required to translate it into languages other than
|
||
English.
|
||
|
||
The limited permissions granted above are perpetual and will not be
|
||
revoked by the Internet Society or its successors or assigns.
|
||
|
||
This document and the information contained herein is provided on an
|
||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Kempf, et al. Informational [Page 27]
|
||
|