diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2596.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2596.txt')
-rw-r--r-- | doc/rfc/rfc2596.txt | 507 |
1 files changed, 507 insertions, 0 deletions
diff --git a/doc/rfc/rfc2596.txt b/doc/rfc/rfc2596.txt new file mode 100644 index 0000000..eeb950c --- /dev/null +++ b/doc/rfc/rfc2596.txt @@ -0,0 +1,507 @@ + + + + + + +Network Working Group M. Wahl +Request for Comments: 2596 Innosoft International, Inc. +Category: Standards Track T. Howes + Netscape Communications Corp. + May 1999 + + + Use of Language Codes in LDAP + + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1999). All Rights Reserved. + +1. Abstract + + The Lightweight Directory Access Protocol [1] provides a means for + clients to interrogate and modify information stored in a distributed + directory system. The information in the directory is maintained as + attributes [2] of entries. Most of these attributes have syntaxes + which are human-readable strings, and it is desirable to be able to + indicate the natural language associated with attribute values. + + This document describes how language codes [3] are carried in LDAP + and are to be interpreted by LDAP servers. All implementations MUST + be prepared to accept language codes in the LDAP protocols. Servers + may or may not be capable of storing attributes with language codes + in the directory. This document does not specify how to determine + whether particular attributes can or cannot have language codes. + + 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 [4]. + +2. Language Codes + + Section 2 of RFC 1766 [3] describes the language code format which is + used in LDAP. Briefly, it is a string of ASCII alphabetic characters + and hyphens. Examples include "fr", "en-US" and "ja-JP". + + + + +Wahl & Howes Standards Track [Page 1] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + + Language codes are case insensitive. For example, the language code + "en-us" is the same as "EN-US" and "en-US". + + Implementations MUST NOT otherwise interpret the structure of the + code when comparing two codes, and MUST treat them as simply strings + of characters. Client and server implementations MUST allow any + arbitrary string which follows the patterns given in RFC 1766 to be + used as a language code. + +3. Use of Language Codes in LDAP + + This section describes how LDAP implementations MUST interpret + language codes in performing operations. + + In general, an attribute with a language code is to be treated as a + subtype of the attribute without a language code. If a server does + not support storing language codes with attribute values in the DIT, + then it MUST always treat an attribute with a language code as an + unrecognized attribute. + +3.1. Attribute Description + + An attribute consists of a type, a list of options for that type, and + a set of one or more values. In LDAP, the type and the options are + combined into the AttributeDescription, defined in section 4.1.5 of + [1]. This is represented as an attribute type name and a possibly- + empty list of options. One of these options associates a natural + language with values for that attribute. + + language-option = "lang-" lang-code + + lang-code = printable-ascii ; a code as defined in RFC 1766 + + Multiple language options may be present on a particular value. + + The language code has no effect on the character set encoding for + string representations of DirectoryString syntax values; the UTF-8 + representation of UniversalString (ISO 10646) is always used. + + Examples of valid AttributeDescription: + givenName;lang-en-US + CN;lang-ja + + In LDAP and in examples in this document, a directory attribute is + represented as an AttributeDescription with a list of values. Note + that the data could be stored in the LDAP server in a different + representation. + + + + +Wahl & Howes Standards Track [Page 2] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + +3.2. Distinguished Names and Relative Distinguished Names + + No attribute description options are permitted in Distinguished Names + or Relative Distinguished Names. Thus language codes MUST NOT be + used in forming DNs. + +3.3. Search Filter + + If a language code is present in an AttributeDescription in a search + filter, then only attribute values in the directory which match the + base attribute type or its subtype, the language code and the + assertion value match this filter. + + Thus for example a filter of an equality match of type "name;lang- + en-US" and assertion value "Billy Ray", against the following + directory entry + + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-EN-US: Billy Ray MATCHES + name;lang-EN-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-us: Billy Ray MATCHES + CN;lang-EN-US;dynamic: Billy Ray MATCHES + CN;lang-en;dynamic: Billy Ray DOES NOT MATCH (differing lang-) + name: Billy Ray DOES NOT MATCH (no lang-) + SN: Ray DOES NOT MATCH (wrong value) + + (Note that "CN" and "SN" are subtypes of "name".) + + Client implementors should however note that providing a language + code in a search filter AttributeDescription will often filter out + desirable values where the language code does not match exactly. For + example, the filter (name;lang-en=Billy Ray) does NOT match the + attribute "name;lang-en-US: Billy Ray". + + If the server does not support storing language codes with attribute + values in the DIT, then any filter which includes a language code + will always fail to match, as it is an unrecognized attribute type. + No error would be returned because of this; a presence filter would + evaluate to FALSE and all other forms to Undefined. + + If no language code is specified in the search filter, then only the + base attribute type and the assertion value need match the value in + the directory. + + Thus for example a filter of an equality match of type "name" and + assertion value "Billy Ray", against the following directory entry + + + + +Wahl & Howes Standards Track [Page 3] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-EN-US: Billy Ray MATCHES + name;lang-EN-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-EN-US;dynamic: Billy Ray MATCHES + CN;lang-en;dynamic: Billy Ray MATCHES + name: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (wrong value) + + Thus in general, clients SHOULD NOT use the language code option in + AttributeDescription fields in search filters. + +3.4. Compare + + A language code can be present in an AttributeDescription used in a + compare request AttributeValueAssertion. This is to be treated by + servers the same as the use of language codes in a search filter with + an equality match, as described in the previous section. If there is + no attribute in the entry with the same subtype and language code, + the noSuchAttributeType error will be returned. + + Thus for example a compare request of type "name" and assertion value + "Johann", against an entry with all the following directory entry + + objectclass: top + objectclass: person + givenName;lang-de-DE: Johann + CN: Johann Sibelius + SN: Sibelius + + will cause the server to return compareTrue. + + However, if the client issued a compare request of type "name;lang- + de" and assertion value "Johann" against the above entry, the request + would fail with the noSuchAttributeType error. + + If the server does not support storing language codes with attribute + values in the DIT, then any comparison which includes a language code + will always fail to locate an attribute type, and noSuchAttributeType + will be returned. + + Thus in general, clients SHOULD NOT use the language code option in + AttributeDescription fields in the compare request. + +3.5. Requested Attributes in Search + + Clients MAY provide language codes in AttributeDescription in the + requested attribute list in a search request. + + + +Wahl & Howes Standards Track [Page 4] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + + If a language code is provided in an attribute description, then only + attribute values in a directory entry which have the same language + code as that provided are to be returned. Thus if a client requests + an attribute "description;lang-en", the server MUST NOT return values + of an attribute "description" or "description;lang-fr". + + Clients MAY provide in the attribute list multiple + AttributeDescription which have the same base attribute type but + different options. For example a client MAY provide both "name;lang- + en" and "name;lang-fr", and this would permit an attribute with + either language code to be returned. Note there would be no need to + provide both "name" and "name;lang-en" since all subtypes of name + would match "name". + + If a server does not support storing language codes with attribute + values in the DIT, then any attribute descriptions in the list which + include language codes are to be ignored, just as if they were + unknown attribute types. + + If a request is made specifying all attributes or an attribute is + requested without providing a language code, then all attribute + values regardless of their language code are returned. + + For example, if the client requests a "description" attribute, and a + matching entry contains + + objectclass: top + objectclass: organization + O: Software GmbH + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + postalAddress: Berlin 8001 Germany + postalAddress;lang-de: Berlin 8001 Deutschland + + The server will return: + + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + +3.6. Add Operation + + Clients MAY provide language codes in AttributeDescription in + attributes of a new entry to be created, subject to the limitation + that the client MUST NOT use language codes in the attribute value or + values which form the RDN of the entry. + + + + +Wahl & Howes Standards Track [Page 5] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + + A client MAY provide multiple attributes with the same attribute type + and value, so long as each attribute has a different language code, + and at most one attribute does not have a language code option. + + Servers which support storing language codes in the DIT MUST allow + any attribute it recognizes that has the Directory String syntax to + have a language option associated with it. Servers SHOULD allow + language options to be associated with other attributes. + + For example, the following is a legal request. + + objectclass: top + objectclass: person + objectclass: residentialPerson + name: John Smith + CN: John Smith + CN;lang-en: John Smith + SN: Smith + streetAddress: 1 University Street + streetAddress;lang-en: 1 University Street + streetAddress;lang-fr: 1 rue Universite + houseIdentifier;lang-fr: 9e etage + + If a server does not support storing language codes with attribute + values in the DIT, then it MUST treat an AttributeDescription with a + language code as an unrecognized attribute. If the server forbids the + addition of unrecognized attributes then it MUST fail the add request + with the appropriate result code. + +3.7. Modify Operation + + A client MAY provide a language code in an AttributeDescription as + part of a modification element in the modify operation. + + Attribute types and language codes MUST match exactly against values + stored in the directory. For example, if the modification is a + "delete", then if the stored values to be deleted have a language + code, the language code MUST be provided in the modify operation, and + if the stored values to be deleted do not have a language code, then + no language code is to be provided. + + If the server does not support storing language codes with attribute + values in the DIT, then it MUST treat an AttributeDescription with a + language code as an unrecognized attribute, and MUST fail the request + with an appropriate result code. + + + + + + +Wahl & Howes Standards Track [Page 6] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + +3.8. Diagnostic Messages + + Servers SHOULD use only printable ASCII characters in the + errorMessage field, as not all clients will be able to display the + full range of Unicode. + +4. Differences from X.500(1997) + + X.500(1997) defines a different mechanism, contexts, as the means of + representing language tags. This section summarizes the major + differences in approach. + + a) An X.500 operation which has specified a language code on a value + matches a value in the directory without a language code. + b) LDAP references RFC 1766, which allows for IANA registration of + new tags. + c) LDAP does not allow language codes in distinguished names. + d) X.500 describes subschema administration procedures to allow + language codes to be associated with particular attributes types. + +5. Security Considerations + + There are no known security considerations for this document. See + the security considerations sections of [1] and [2] for security + considerations of LDAP in general. + +6. Acknowledgements + + This document is a product of the IETF ASID and LDAPEXT working + groups. Martin Duerst provided many valuable comments on an earlier + version of this document. + +7. Bibliography + + [1] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + + [2] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight + X.500 Directory Access Protocol Attribute Syntax Definitions", + RFC 2252, December 1997. + + [3] Alvestrand, H.,"Tags for the Identification of Languages", RFC + 1766, March 1995. + + [4] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + + + + +Wahl & Howes Standards Track [Page 7] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + +8. Authors' Addresses + + Mark Wahl + Innosoft International, Inc. + 8911 Capital of Texas Hwy Suite 4140 + Austin, TX 78759 USA + + EMail: M.Wahl@innosoft.com + + + Tim Howes + Netscape Communications Corp. + 501 E. Middlefield Rd + Mountain View, CA 94043 USA + + Phone: +1 650 937-3419 + EMail: howes@netscape.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wahl & Howes Standards Track [Page 8] + +RFC 2596 Use of Language Codes in LDAP May 1999 + + +Full Copyright Statement + + Copyright (C) The Internet Society (1999). 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. + + + + + + + + + + + + + + + + + + + +Wahl & Howes Standards Track [Page 9] + |