RFC 2079

Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs)

πŸ“… published January 1997, from ietf

RFC 2079: Defining an X.500 Attribute Type and Object Class for URIs πŸŽ€

okay bestie, this one is from January 1997 and it's from the Network Working Group 🌸 It was written by Mark Smith (M. Smith) at Netscape Communications, and it's on the Standards Track πŸ’… It doesn't list anything it obsoletes or updates, so it's a pretty clean start ✨


Status of This Memo πŸ“œ

this doc is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements πŸ’– For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) 🧚 Distribution of this memo is unlimited 🌈

Abstract ✨

URLs are everywhere now, used to point at Internet resources πŸ¦‹ There's a real need to put them into directories that follow the LDAP and X.500 information models, and people also want other kinds of URIs in there as those get defined πŸ’œ A bunch of independent groups were already trying to stick URLs into LDAP and X.500 directories, and this doc builds on that experimenting πŸ”₯ It defines a new attribute type and an auxiliary object class so URIs (URLs included) can be stored in directory entries in a standard way πŸ‘‘

Background and Intended Usage 🌸

URLs, as defined in [1], are the first of several kinds of URIs the IETF is defining 🫢 URIs are super popular on the Internet, especially inside HTML documents [2] πŸ’… This doc defines an X.500 [3,4] attribute type called labeledURI and an auxiliary object class called labeledURIObject to hold all kinds of URIs, URLs included ✨ They're made for LDAP and X.500 directories, but they can be used in other contexts too πŸŽ€

Schema Definition of the labeledURI Attribute Type πŸ“‹

Name:             labeledURI
ShortName:        None
Description:      Uniform Resource Identifier with optional label
OID:              umichAttributeType.57 (1.3.6.1.4.1.250.1.57)
Syntax:           caseExactString
SizeRestriction:  None
SingleValued:     False

Discussion of the labeledURI Attribute Type πŸ’¬

okay so the labeledURI attribute uses the caseExactString syntax, because URIs are case-sensitive, and it's multivalued πŸ’– Each value should be a URI (right now, that means a URL), optionally followed by one or more space characters and then a label πŸ¦‹ Spaces aren't allowed un-encoded inside URIs, so there's zero ambiguity about where the label starts πŸ™ˆ For now, the URI part has to follow the URL specification in [1] πŸ”₯

Multiple labeledURI values usually mean different resources that all relate to the X.500 object 🧚 They can also be different locations for the same resource ✨

The label describes the resource the URI points to, and it's meant to be a friendly name that humans can read 🌈 This doc doesn't propose any specific syntax for the label πŸ’… Sometimes it helps to put the kind and/or size of the resource in the label πŸ“¦

Heads up: the label can use any characters that caseExactString allows, but non-IA5 (non-ASCII) characters are discouraged 😭 Not every directory client handles them the same way πŸ’€ If you do include non-IA5 characters, use X.500 conventions, not HTML ones 🫢 For example, an "a" with a ring above it should be encoded with the T.61 sequence 0xCA followed by an "a" character, and you should not use the HTML escape &aring 🚫

Examples of labeledURI Attribute Values πŸ“

here are some examples, bestie 🧚

An example with no label:

ftp://ds.internic.net/rfc/rfc822.txt

An example with a tilde in the URL. Special characters in a URL have to be encoded the way the URL document [1] says. The label is "LDAP Home Page":

http://www.umich.edu/%7Ersug/ldap/ LDAP Home Page

Another one! This label has a hint so the user knows the URL points to a photo image πŸ“Έ

http://champagne.inria.fr/Unites/rennes.gif Rennes [photo]

Schema Definition of the labeledURIObject Object Class 🧩

Name:              labeledURIObject
Description:       object that contains the URI attribute type
OID:               umichObjectClass.15 (1.3.6.1.4.1.250.3.15)
SubclassOf:        top
MustContain:
MayContain:        labeledURI

Discussion of the labeledURIObject Object Class 🌟

the labeledURIObject class is a subclass of top and may contain the labeledURI attribute πŸ’œ The idea is that you can add this object class to existing directory objects so they can hold URI values πŸŽ€ It doesn't rule out putting the labeledURI attribute type straight into other object classes where that fits πŸ¦‹

Security Considerations 🚨

this part is serious, bestie 😭

security isn't really discussed in this memo, except for one big warning: blindly putting the label part of a labeledURI attribute value into an HTML document is not recommended πŸ’€ A malicious person could sneak HTML tags into the label, and those tags could mislead viewers of the whole document where the value got inserted πŸ™ˆ

Acknowledgments 🫢

Paul-Andre Pays, Martijn Koster, Tim Howes, Rakesh Patel, Russ Wright, and Hallvard Furuseth gave invaluable help in making this doc πŸ‘‘

This material is based in part on work supported by the National Science Foundation under Grant No. NCR-9416667 ✨


Appendix: The labeledURL Attribute Type (Deprecated) πŸ₯€

an earlier draft of this doc defined a second attribute type called labeledURL πŸ•°οΈ It's deprecated now, so don't use it when adding new values to directory entries 🚫 The original reason for a separate URL attribute was that it would make it easier to programmatically access specific types of URIs 🧠 After some deliberation, the IETF-ASID working group decided one attribute was better than two πŸ’…

The labeledURL schema is kept here for historical reference only πŸ“š Directory client software may want to support it alongside labeledURI, which helps sites that are still using labeledURL move over to the new one πŸ¦‹

Name:             labeledURL
ShortName:        None
Description:      Uniform Resource Locator with optional label
OID:              umichAttributeType.41 (1.3.6.1.4.1.250.1.41)
Syntax:           caseExactString
SizeRestriction:  None
SingleValued:     False
OID:              umichAttributeType.41 (1.3.6.1.4.1.250.1.41)

References πŸ“š

[1] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, CERN, Xerox Corporation, University of Minnesota, December 1994. <URL:ftp://ds.internic.net/rfc/rfc1738.txt>

[2] Berners-Lee, T., and D. Connolly, "Hypertext Markup Language - 2.0", RFC 1866. <URL:ftp://ds.internic.net/rfc/rfc1866.txt>

[3] The Directory: Overview of Concepts, Models and Service. CCITT Recommendation X.500, 1988.

[4] Information Processing Systems -- Open Systems Interconnection -- The Directory: Overview of Concepts, Models and Service. ISO/IEC JTC 1/SC21; International Standard 9594-1, 1988.

Author's Address πŸ’Œ

Mark Smith Netscape Communications Corp. 501 E. Middlefield Rd. Mountain View, CA 94043, USA

Phone: +1 415 937-3477 Email: mcs@netscape.com

πŸ“¦ where this page comes from