diff --git a/doc/drafts/draft-howard-rfc2307bis-xx.txt b/doc/drafts/draft-howard-rfc2307bis-xx.txt new file mode 100644 index 0000000000000000000000000000000000000000..74bfdc7c268053c8375e5fe9de68f60b10e91084 --- /dev/null +++ b/doc/drafts/draft-howard-rfc2307bis-xx.txt @@ -0,0 +1,1792 @@ + + + +Network Working Group L. Howard +Internet-Draft PADL Software +Obsoletes: 2307 (if approved) H. Chu, Ed. +Intended status: Informational Symas Corp. +Expires: February 10, 2010 August 9, 2009 + + + An Approach for Using LDAP as a Network Information Service + draft-howard-rfc2307bis-02.txt + +Status of this Memo + + This Internet-Draft is submitted to IETF in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as Internet- + Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/1id-abstracts.txt. + + The list of Internet-Draft Shadow Directories can be accessed at + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on February 10, 2010. + +Copyright Notice + + Copyright (c) 2009 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents in effect on the date of + publication of this document (http://trustee.ietf.org/license-info). + Please review these documents carefully, as they describe your rights + and restrictions with respect to this document. + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 1] + +Internet-Draft LDAP NameService Schema August 2009 + + +Abstract + + This document describes a mechanism for mapping entities related to + TCP/IP and the UNIX system [UNIX] into [X.500] entries so that they + may be resolved with the Lightweight Directory Access Protocol + [RFC4511]. A set of attribute types and object classes are proposed, + along with specific guidelines for interpreting them. The intention + is to assist the deployment of LDAP as an organizational nameservice. + No proposed solutions are intended as standards for the Internet. + Rather, it is hoped that a general consensus will emerge as to the + appropriate solution to such problems, leading eventually to the + adoption of standards. The proposed mechanism has already been + implemented with some success. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 2] + +Internet-Draft LDAP NameService Schema August 2009 + + +1. Background and Motivation + + The UNIX (R) operating system, and its derivatives (specifically, + those which support TCP/IP and conform to the X/Open Single UNIX + specification [UNIX]) require a means of looking up entities, by + matching them against search criteria or by enumeration. (Other + operating systems that support TCP/IP may provide some means of + resolving some of these entities. This schema is applicable to those + environments also.) + + These entities include users, groups, IP services (which map names to + IP ports and protocols, and vice versa), IP protocols (which map + names to IP protocol numbers and vice versa), RPCs (which map names + to ONC Remote Procedure Call [RFC1057] numbers and vice versa), NIS + netgroups, booting information (boot parameters and MAC address + mappings), filesystem mounts, IP hosts and networks. + + Resolution requests are made through a set of C functions, provided + in the UNIX system's C library. For example, the UNIX system utility + "ls", which enumerates the contents of a filesystem directory, uses + the C library function getpwuid() in order to map user IDs to login + names. Once the request is made, it is resolved using a + "nameservice" which is supported by the client library. The + nameservice may be, at its simplest, a collection of files in the + local filesystem which are opened and searched by the C library. + Other common nameservices include the Network Information Service + (NIS) and the Domain Name System (DNS) [RFC1034]. (The latter is + typically used for resolving hosts, services and networks.) Both + these nameservices have the advantage of being distributed and thus + permitting a common set of entities to be shared amongst many + clients. + + LDAP is a distributed, hierarchical directory service access protocol + which is used to access repositories of users and other network- + related entities. Because LDAP is often not tightly integrated with + the host operating system, information such as users may need to be + kept both in LDAP and in an operating system supported nameservice + such as NIS. By using LDAP as the primary means of resolving these + entities, these redundancy issues are minimized and the scalability + of LDAP can be exploited. (By comparison, NIS services based on flat + files do not have the scalability or extensibility of LDAP or X.500.) + + The object classes and attributes defined below are suitable for + representing the aforementioned entities in a form compatible with + LDAP and X.500 directory services. + + + + + + +Howard & Chu Expires February 10, 2010 [Page 3] + +Internet-Draft LDAP NameService Schema August 2009 + + +2. General Issues + +2.1. Terminology + + The key words "MUST", "SHOULD", and "MAY" used in this document are + to be interpreted as described in [RFC2119]. + + For the purposes of this document, the term "nameservice" refers to a + service, such as NIS or flat files, that is used by the operating + system to resolve entities within a single, local naming context. + Contrast this with a "directory service" such as LDAP, which supports + extensible schema and multiple naming contexts. + + The term "NIS-related entities" broadly refers to entities which are + typically resolved using the Network Information Service. (NIS was + previously known as YP.) Deploying LDAP for resolving these entities + does not imply that NIS be used, as a gateway or otherwise. In + particular, the host and network classes are generically applicable, + and may be implemented on any system that wishes to use LDAP or X.500 + for host and network resolution. + + The "DUA" (directory user agent) refers to the LDAP client querying + these entities, such as an LDAP to NIS gateway or the C library. The + "client" refers to the application which ultimately makes use of the + information returned by the resolution. It is irrelevant whether the + DUA and the client reside within the same address space. The act of + the DUA making this information to the client is termed + "republishing". + + To avoid confusion, the term "login name" refers to the user's login + name (being the value of the uid attribute) and the term "user ID" + refers to the user's integer identification number (being the value + of the uidNumber attribute). + + The phrases "resolving an entity" and "resolution of entities" refer + respectively to enumerating NIS-related entities of a given type, and + matching them against a given search criterion. One or more entities + are returned as a result of successful "resolutions" (a "match" + operation will only return one entity). + + The use of the term UNIX does not confer upon this schema the + endorsement of owners of the UNIX trademark. Where necessary, the + term "TCP/IP entity" is used to refer to protocols, services, hosts, + and networks, and the term "UNIX entity" to its complement. (The + former category does not mandate the host operating system supporting + the interfaces required for resolving UNIX entities.) + + The OIDs defined below are derived from iso(1) org(3) dod(6) + + + +Howard & Chu Expires February 10, 2010 [Page 4] + +Internet-Draft LDAP NameService Schema August 2009 + + + internet(1) directory(1) nisSchema(1) + +2.2. Schema + + The attributes and classes defined in this document are summarized + below. + +2.2.1. Attributes + + The following attributes are defined in this document: + + uidNumber + gidNumber + gecos + homeDirectory + loginShell + shadowLastChange + shadowMin + shadowMax + shadowWarning + shadowInactive + shadowExpire + shadowFlag + memberUid + memberNisNetgroup + nisNetgroupTriple + ipServicePort + ipServiceProtocol + ipProtocolNumber + oncRpcNumber + ipHostNumber + ipNetworkNumber + ipNetmaskNumber + macAddress + bootParameter + bootFile + nisMapName + nisMapEntry + nisPublicKey + nisSecretKey + nisDomain + automountMapName + automountKey + automountInformation + + Additionally, some of the attributes defined in [RFC4519] and + [RFC3112] are required. + + + + +Howard & Chu Expires February 10, 2010 [Page 5] + +Internet-Draft LDAP NameService Schema August 2009 + + +2.2.2. Attribute Option + + Centralizing a name service in LDAP allows heterogeneous systems to + obtain their information from a single place. However in some cases, + this information cannot be used uniformly on all of the client + systems. These attribute options are defined to allow system- + specific values to be used where necessary. The options are defined + as the following: + + host-<hostname> + hostos-<ostype> + + where hostname is a string representing the name of a specific + machine, and ostype is a string representing a particular operating + system. + + For example, a user named "Babs Jensen" may have a different home + directory on different machines. This could be represented as: + + homeDirectory: /home/babsj + homeDirectory;hostos-sunos: /export/home/bjensen + homeDirectory;host-babshost: /home/root + + These attribute options follow sub-typing semantics. If a DUA + requests an attribute to be returned in a search operation, and does + not specify an option, all subtypes of that attribute are returned. + +2.2.3. Object Classes + + The following object classes are defined in this document: + + posixAccount + shadowAccount + posixGroup + ipService + ipProtocol + oncRpc + ipHost + ipNetwork + nisNetgroup + nisMap + nisObject + ieee802Device + bootableDevice + nisKeyObject + nisDomainObject + automountMap + automount + + + +Howard & Chu Expires February 10, 2010 [Page 6] + +Internet-Draft LDAP NameService Schema August 2009 + + + Additionally, some of the attributes defined in [RFC4519] are + required. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 7] + +Internet-Draft LDAP NameService Schema August 2009 + + +3. Attribute Definitions + + This section contains attribute definitions to be implemented by DUAs + supporting this schema: + + ( 1.3.6.1.1.1.1.0 NAME 'uidNumber' + DESC 'An integer uniquely identifying a user in an + administrative domain' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.1 NAME 'gidNumber' + DESC 'An integer uniquely identifying a group in an + administrative domain' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.2 NAME 'gecos' + DESC 'The GECOS field; the common name' + EQUALITY caseIgnoreMatch + SUBSTRINGS caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' + DESC 'The absolute path to the home directory' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.4 NAME 'loginShell' + DESC 'The path to the login shell' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 8] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.6 NAME 'shadowMin' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.7 NAME 'shadowMax' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + + +Howard & Chu Expires February 10, 2010 [Page 9] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.1.12 NAME 'memberUid' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + + ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + + ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' + DESC 'Netgroup triple' + EQUALITY caseIgnoreMatch + SUBSTRINGS caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + + ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' + DESC 'Service port number' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' + DESC 'Service protocol name' + EQUALITY caseIgnoreMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + + ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' + DESC 'IP protocol number' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' + DESC 'ONC RPC number' + EQUALITY integerMatch + ORDERING integerOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + + + + + + +Howard & Chu Expires February 10, 2010 [Page 10] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' + DESC 'IPv4 addresses as a dotted decimal omitting leading + zeros or IPv6 addresses as defined in RFC2373' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + + + ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' + DESC 'IP network omitting leading zeros, eg. 192.168' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' + DESC 'IP netmask omitting leading zeros, eg. 255.255.255.0' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.22 NAME 'macAddress' + DESC 'MAC address in maximal, colon separated hex + notation, eg. 00:00:92:90:ee:e2' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + + + ( 1.3.6.1.1.1.1.23 NAME 'bootParameter' + DESC 'rpc.bootparamd parameter' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + + + ( 1.3.6.1.1.1.1.24 NAME 'bootFile' + DESC 'Boot image name' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + + + ( 1.3.6.1.1.1.1.26 NAME 'nisMapName' + DESC 'Name of a generic NIS map' + EQUALITY caseIgnoreMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} ) + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 11] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' + DESC 'A generic NIS entry' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey' + DESC 'NIS public key' + EQUALITY octetStringMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey' + DESC 'NIS secret key' + EQUALITY octetStringMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.30 NAME 'nisDomain' + DESC 'NIS domain' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + + + ( 1.3.6.1.1.1.1.31 NAME 'automountMapName' + DESC 'automount Map Name' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.32 NAME 'automountKey' + DESC 'Automount Key value' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + + + ( 1.3.6.1.1.1.1.33 NAME 'automountInformation' + DESC 'Automount information' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + + + + + +Howard & Chu Expires February 10, 2010 [Page 12] + +Internet-Draft LDAP NameService Schema August 2009 + + +4. Class Definitions + + This section contains class definitions to be implemented by DUAs + supporting the schema. + + Various schema for mail routing and delivery using LDAP directories + have been proposed, and as such this document does not consider + schema for representing mail aliases or distribution lists. + + ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY + DESC 'Abstraction of an account with POSIX attributes' + MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) + MAY ( authPassword $ userPassword $ loginShell $ gecos $ + description ) ) + + + ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY + DESC 'Additional attributes for shadow passwords' + MUST uid + MAY ( authPassword $ userPassword $ description $ + shadowLastChange $ shadowMin $ shadowMax $ + shadowWarning $ shadowInactive $ + shadowExpire $ shadowFlag ) ) + + + ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY + DESC 'Abstraction of a group of accounts' + MUST gidNumber + MAY ( authPassword $ userPassword $ memberUid $ + description ) ) + + + ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL + DESC 'Abstraction an Internet Protocol service. + Maps an IP port and protocol (such as tcp or udp) + to one or more names; the distinguished value of + the cn attribute denotes the service's canonical + name' + MUST ( cn $ ipServicePort $ ipServiceProtocol ) + MAY description ) + + + ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL + DESC 'Abstraction of an IP protocol. Maps a protocol number + to one or more names. The distinguished value of the cn + attribute denotes the protocol canonical name' + MUST ( cn $ ipProtocolNumber ) + MAY description ) + + + +Howard & Chu Expires February 10, 2010 [Page 13] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL + DESC 'Abstraction of an Open Network Computing (ONC) + [RFC1057] Remote Procedure Call (RPC) binding. + This class maps an ONC RPC number to a name. + The distinguished value of the cn attribute denotes + the RPC service canonical name' + MUST ( cn $ oncRpcNumber ) + MAY description ) + + + ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY + DESC 'Abstraction of a host, an IP device. The distinguished + value of the cn attribute denotes the host's canonical + name. Device SHOULD be used as a structural class' + MUST ( cn $ ipHostNumber ) + MAY ( authPassword $ userPassword $ l $ description $ + manager ) ) + + + ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL + DESC 'Abstraction of a network. The distinguished value of + the cn attribute denotes the network canonical name' + MUST ipNetworkNumber + MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) ) + + + ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL + DESC 'Abstraction of a netgroup. May refer to other + netgroups' + MUST cn + MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) ) + + + ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL + DESC 'A generic abstraction of a NIS map' + MUST nisMapName + MAY description ) + + + ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL + DESC 'An entry in a NIS map' + MUST ( cn $ nisMapEntry $ nisMapName ) + + + ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY + DESC 'A device with a MAC address; device SHOULD be + used as a structural class' + MAY macAddress ) + + + +Howard & Chu Expires February 10, 2010 [Page 14] + +Internet-Draft LDAP NameService Schema August 2009 + + + ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY + DESC 'A device with boot parameters; device SHOULD be + used as a structural class' + MAY ( bootFile $ bootParameter ) ) + + + ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY + DESC 'An object with a public and secret key' + MUST ( cn $ nisPublicKey $ nisSecretKey ) + MAY ( uidNumber $ description ) ) + + + ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY + DESC 'Associates a NIS domain with a naming context' + MUST nisDomain ) + + + ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL + MUST ( automountMapName ) + MAY description ) + + + ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL + DESC 'Automount information' + MUST ( automountKey $ automountInformation ) + MAY description ) + + + ( 1.3.6.1.1.1.2.18 NAME 'groupOfMembers' SUP top STRUCTURAL + DESC 'A group with members (DNs)' + MUST cn + MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ + description $ member ) ) + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 15] + +Internet-Draft LDAP NameService Schema August 2009 + + +5. Implementation Details + +5.1. Suggested Resolution Methods + + The preferred means of directing a client application (one using the + shared services of the C library) to use LDAP as its information + source for the functions listed in Appendix B is to modify the source + code to directly query LDAP. As the source to commercial C libraries + and applications is rarely available to the end-user, one could + emulate a supported nameservice (such as NIS). (This is also an + appropriate opportunity to perform caching of entries across process + address spaces.) In the case of NIS, reference implementations are + widely available and the RPC interface is well known. + + The means by which the operating system is directed to use LDAP is + implementation dependent. For example, some operating systems and C + libraries support end-user extensible resolvers using dynamically + loadable libraries and a nameservice "switch" (NSS). The means in + which the DUA locates LDAP servers is also implementation dependent. + +5.2. Interpreting User and Group Entries + + User and group resolution is initiated by the functions prefixed by + getpw and getgr respectively. The uid attribute contains the user's + login name. The cn attribute, in posixGroup entries, contains the + group's name. This document preserves the use of the uid attribute + even though, being a naming attribute, its syntax is case + insensitive. This may cause a problem with existing deployments + where there exist login names differing only in case. If DUAs + support attribute mapping, a different attribute MAY be used to + represent users' login names. + + The account object class provides a convenient structural class for + posixAccount, and SHOULD be used where additional attributes are not + required. Likewise, the groupOfMembers object class SHOULD be used + for groups. (The groupOfUniqueNames object class is deprecated and + SHOULD NOT be used.) + + It is suggested that uid and cn are used as the naming attribute for + posixAccount and posixGroup entries, respectively. Group members may + either be login names (values of memberUid) or distinguished names + (values of member). In the latter case, the distinguished name must + be mapped to one or more login names by examining the name's RDN or, + if it is not distinguished by uid, performing a base search on the DN + with a filter of "(objectclass=*)". DUAs MAY wish to cache DN to + login name mappings. The DUA MAY traverse nested groups. + + An account's GECOS field is preferably determined by a value of the + + + +Howard & Chu Expires February 10, 2010 [Page 16] + +Internet-Draft LDAP NameService Schema August 2009 + + + gecos attribute. If no gecos attribute exists, the value of the cn + attribute MUST be used. (The existence of the gecos attribute allows + information embedded in the GECOS field, such as a user's telephone + number, to be returned to the client without overloading the cn + attribute. It also accommodates directories where the common name + does not contain the user's full name.) + +5.2.1. Using Attribute Options + + Some posixAccount attributes may be accompanied by options + (Section 2.2.2) identifying particular hosts or operating system + types. The attribute with a hostos option matching the operating + system of the DUA SHOULD be used in preference to an attribute + without any associated options. The attribute with a host option + matching the hostname of the DUA SHOULD be used in preference to any + other attribute. + +5.2.2. Authentication Considerations + +5.2.2.1. Using Password Values + + When authenticating using a NIS to LDAP gateway or using NSS, a + lookup is performed to retrieve the password attribute and the value + is used in the DUA to authenticate a user. This approach to + authentication is deprecated, as it requires that read access to the + password attribute be granted across a network. + + An entry of class posixAccount, posixGroup, or shadowAccount without + an authPassword or userPassword attribute MUST NOT be used for + authentication. In this case the client SHOULD be returned a non- + matchable password such as "x". + + If userPassword is used, its values MUST be represented by the + following syntax: + + passwordvalue = schemeprefix hashedpasswd + schemeprefix = "{" scheme "}" + scheme = "crypt" / "md5" / "sha" / "ssha" / altscheme + altscheme = "x-" keystring + hashedpasswd = hashed password + + The hashed password contains a plaintext key hashed using the + algorithm scheme. If the schema is "sha", the hashed password is the + base64 encoding of the SHA-1 digest of the plaintext password. + + userPassword values which do not adhere to this syntax MUST NOT be + used for authentication. The DUA MUST iterate through the values of + the attribute until a value matching the above syntax is found. Only + + + +Howard & Chu Expires February 10, 2010 [Page 17] + +Internet-Draft LDAP NameService Schema August 2009 + + + if hashedpassword is an empty string does the user have no password. + DUAs are not required to consider hashing schemes which the client + will not recognize; in most cases, it may be sufficient to consider + only "crypt". + + DUA MAY use the authPassword attribute instead of userPassword, + defined in [RFC3112]. The DUA MUST iterate the values of the + authPassword attribute until a value whose scheme is CRYPT is found. + The DUA MAY iterate through the values of the userPassword attribute, + using the syntax defined here, until a value whose scheme is CRYPT is + found. If no conforming value is found, the client MUST be returned + a non-matchable password such as "x". Authentication using schemes + other than CRYPT is, although advisable, beyond the scope of this + document + + Below is an example of an authPassword attribute: + + authPassword: CRYPT$X5/DBrWPOQQaI + + Below is an example of a (deprecated) userPassword attribute: + + userPassword: {CRYPT}X5/DBrWPOQQaI + + A DUA MAY utilize the attributes in the shadowAccount class to + provide shadow password service (getspnam() and getspent()). In such + cases, the DUA MUST NOT make use of the userPassword attribute for + getpwnam() et al, and MUST return a non-matchable password (such as + "x") to the client instead. + +5.2.2.2. Using LDAP Bind + + The preferred method for authenticating users with LDAP is to perform + an LDAP Bind operation with the user's name and password. In this + case the method the DSA uses to store and verify the password is + completely internal to the DSA and not of any concern to the DUA. + + Likewise, using the shadowAccount attributes requires the DUA to + handle password policy enforcement. However the policies expressed + in the shadowAccount are limited in scope, and not uniformly + applicable to all the systems that will be using LDAP. + + The preferred method is to leave password policy enforcement to the + DSA, so that it will be uniformly enforced across all of the various + systems that rely on the directory. This enforcement occurs + implicitly when authenticating using LDAP Bind if the DSA supports + the LDAP password policy [I-D.behera-ldap-password-policy] + mechanisms. + + + + +Howard & Chu Expires February 10, 2010 [Page 18] + +Internet-Draft LDAP NameService Schema August 2009 + + + The means in which authentication in the DUA is configured is + implementation dependent. Typically it is accomplished using [PAM]. + Further details of authentication are beyond the scope of this + document. + +5.2.3. Naming Considerations + + On UNIX systems, users and groups reside in separate name spaces and + it is common for the same name to be used by both a user and a group. + Since they are in separate name spaces there is no ambiguity and no + conflict. However, when integrating a name service into LDAP the + directory may be used with other systems besides UNIX and its + derivatives. In particular, the Microsoft Windows operating system + may also use LDAP for its own name service. In Windows, users and + groups reside in a single name space and so one cannot use the same + name for both a user and a group. + + Conflicts in naming conventions may arise in other deployments as + well, and should be carefully taken into account when migrating from + other naming services into LDAP. + +5.3. Interpreting Hosts and Networks + + The ipHostNumber and ipNetworkNumber attributes are defined in + preference to dNSRecord (defined in [RFC1279]), in order to simplify + the DUA's role in interpreting entries in the directory. A dNSRecord + expresses a complete resource record, including time to live and + class data, which is extraneous to this schema. + + Additionally, the ipHost and ipNetwork classes permit a host or + network (respectively) and all its aliases to be represented by a + single entry in the directory. This is not necessarily possible if a + DNS resource record is mapped directly to an LDAP entry. + Implementations that wish to use LDAP to master DNS zone information + are not precluded from doing so, and may simply avoid the ipHost and + ipNetwork classes. + + This document redefines, although not exclusively, the ipNetwork + class defined in [RFC1279], in order to achieve consistent naming + with ipHost. The ipNetworkNumber attribute is also used in the + siteContact object class [ROSE]. + + The authPassword and userPassword attributes are included in ipHost + such that hosts MAY be treated as authentication principals. The + treatment of these attributes and inherent caveats considered in + Section 5.2 apply here also. + + The trailing zeros in a network address MUST be omitted. CIDR-style + + + +Howard & Chu Expires February 10, 2010 [Page 19] + +Internet-Draft LDAP NameService Schema August 2009 + + + network addresses (eg. 192.168.1/24) MAY be used. Leading zeros MUST + be removed from all components of an IPv6 address string as defined + by [RFC2373], section 2.2, item 1. The IPv6 address string MUST be + further normalized by following the "::" syntax as defined in + [RFC2373], section 2.2, item 2. In addition, "::" MUST be used to + replace the longest string of zero bits. If there are two or more + longest strings of zero bits, then the first string MUST be replaced. + In addition, the syntax defined by [RFC2373], section 2.2, item 3 + MUST NOT be used. IPv4 addresses MUST be represented by the IPv4 + dotted decimal string syntax. + + For example the following address: + + 1080:0000:0:0:08:800:200C:417A + FF01:0:0:0:0:0:01 + 0:0:0:0:0:0:0:0001 + 0:0:0:0:0:0:0:0 + + MUST be normalized as: + + 1080::8:800:200C:417A + FF01::101 + 0::1 + :: + +5.4. Interpreting Other Entities + + In general, a one-to-one mapping between entities and LDAP entries is + proposed, in that each entity has exactly one representation in the + DIT. In some cases this is not feasible; for example, a service + which is represented in more than one protocol domain. Consider the + following entry: + + dn: cn=domain,ou=services,dc=aja,dc=com + objectClass: top + objectClass: ipService + cn: domain + cn: nameserver + ipServicePort: 53 + ipServiceProtocol: tcp + ipServiceProtocol: udp + + This entry MUST map to the following two (2) services entities: + + domain 53/tcp nameserver + domain 53/udp nameserver + + While the above two entities may be represented as separate LDAP + + + +Howard & Chu Expires February 10, 2010 [Page 20] + +Internet-Draft LDAP NameService Schema August 2009 + + + entities, with different distinguished names (such as cn=domain+ + ipServiceProtocol=tcp, ... and cn=domain+ipServiceProtocol=udp, ...) + it is convenient to represent them as a single entry. If a service + is represented in multiple protocol domains with different ports, + then multiple entries are required; multi-valued RDNs MAY be used to + distinguish them.) + + With the exception of authPassword and userPassword values, empty + values (consisting of a zero length string) are returned by the DUA + to the client. The DUA MUST reject any entries which do not conform + to the schema (missing mandatory attributes). Non-conforming entries + SHOULD be ignored while enumerating entries. + + The nisDomainObject object class is provided to associate a NIS + domain with a naming context. A DUA would retrieve the NIS domain + name from a configuration file and enumerate the naming contexts + served by an LDAP server, searching each naming context for + (nisDomain=%s). The first matching entry that is found MAY be used + as a search base for configuration profile information or for entries + themselves. For example, the following example shows an association + between the NIS domain "nis.aja.com" and the naming context + "dc=aja,dc=com": + + dn: dc=aja,dc=com + objectClass: top + objectClass: domain + objectClass: nisDomainObject + dc: aja + nisDomain: nis.aja.com + + The nisObject object class MAY be used as a generic means of + representing NIS entities. Its use is not encouraged; where support + for entities not described in this schema is desired, an appropriate + schema should be devised. Implementers are strongly advised to + support end-user extensible mappings between NIS entities and object + classes. (Where the nisObject class is used, the nisMapName + attribute MAY be used as a RDN.) The nisObject class might be used + to represent automount information. + +5.5. Canonicalizing entries with multi-valued naming attributes + + For entities such as hosts, services, networks, protocols, and RPCs, + where there may be one or more aliases, the respective entry's + relative distinguished name SHOULD be used to determine the canonical + name. Any other values for the same attribute are used as aliases. + For example, the service described in Section 5.4 has the canonical + name "domain" and exactly one alias, "nameserver". + + + + +Howard & Chu Expires February 10, 2010 [Page 21] + +Internet-Draft LDAP NameService Schema August 2009 + + + The schema in this document generally only defines one attribute per + class which is suitable for distinguishing an entity (excluding any + attributes with integer syntax; it is assumed that entries will be + distinguished on name). Usually, this is the common name (cn) + attribute. This aids the DUA in determining the canonical name of an + entity, as it can examine the value of the relative distinguished + name. Aliases are thus any values of the distinguishing attribute + (such as cn) which do not match the canonical name of the entity. + + In the event that a different attribute is used to distinguish the + entry, as may be the case where these object classes are used as + auxiliary classes, the entry's canonical name may not be present in + the RDN. In this case, the DUA MUST choose one of the non- + distinguished values to represent the entity's canonical name. As + the directory server guarantees no ordering of attribute values, it + may not be possible to distinguish an entry deterministically. This + ambiguity SHOULD NOT be resolved by mapping one directory entry into + multiple entities. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 22] + +Internet-Draft LDAP NameService Schema August 2009 + + +6. Implementation Focus + + Gateways between NIS and LDAP have been developed by PADL Software + and Sun Microsystems. They both support this schema. + + An open source implementation of the C library resolution code has + been written and is available from PADL Software. It supports C + libraries on GNU, BSD, AIX, and Solaris operating systems. PADL have + also made available a set of scripts for migrating flat files into a + form suitable for loading into an LDAP server. Another open source + implementation of the C library code is available from the OpenLDAP + Project. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 23] + +Internet-Draft LDAP NameService Schema August 2009 + + +7. Security Considerations + + The entirety of related security considerations are outside the scope + of this document. It is noted that making passwords encrypted with a + widely understood hash function (such as crypt()) available to non- + privileged users is dangerous because it exposes them to dictionary + and brute-force attacks. This is proposed only for compatibility + with existing UNIX system implementations. Sites where security is + critical SHOULD consider using a strong authentication service for + user authentication. + + Alternatively, the encrypted password could be made available only to + a subset of privileged DUAs, which would provide "shadow" password + service to client applications. This may be difficult to enforce. + + Because the schema represents operating system-level entities, access + to these entities SHOULD be granted on a discretionary basis. (There + is little point in restricting access to data which will be + republished without restriction, however.) It is particularly + important that only administrators can modify entries defined in this + schema, with the exception of allowing a principal to change their + password (which MAY be done on behalf of the user by a client bound + as a superior principal, such that password restrictions MAY be + enforced). For example, if a user were allowed to change the value + of their uidNumber attribute, they could subvert security by + equivalencing their account with the superuser account. + + A subtree of the DIT which is to be republished by a DUA (such as a + NIS gateway) SHOULD be within the same administrative domain that the + republishing DUA represents. (For example, principals outside an + organization, while conceivably part of the DIT, should not be + considered with the same degree of authority as those within the + organization.) + + Finally, care should be exercised with integer attributes of a + sensitive nature (particularly the uidNumber and gidNumber + attributes) which contain zero-length values. DUAs MAY treat such + values as corresponding to the "nobody" or "nogroup" user and group, + respectively. + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 24] + +Internet-Draft LDAP NameService Schema August 2009 + + +8. Acknowledgements + + Thanks to Bob Joslin of the Hewlett Packard Company, and to all those + that helped with this document's predecessor, RFC 2307. + + UNIX is a registered trademark of The Open Group. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 25] + +Internet-Draft LDAP NameService Schema August 2009 + + +9. References + + [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", + STD 13, RFC 1034, November 1987. + + [RFC1057] Sun Microsystems, Inc., "RPC: Remote Procedure Call + Protocol specification: Version 2", RFC 1057, June 1988. + + [RFC1279] Hardcastle-Kille, S., "X.500 and Domains", RFC 1279, + November 1991. + + [RFC2373] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 2373, July 1998. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol + (LDAP): The Protocol", RFC 4511, June 2006. + + [RFC4515] Smith, M. and T. Howes, "Lightweight Directory Access + Protocol (LDAP): String Representation of Search Filters", + RFC 4515, June 2006. + + [RFC4519] Sciberras, A., "Lightweight Directory Access Protocol + (LDAP): Schema for User Applications", RFC 4519, + June 2006. + + [RFC3112] Zeilenga, K., "LDAP Authentication Password Schema", + RFC 3112, May 2001. + + [I-D.behera-ldap-password-policy] + Sermersheim, J., Poitou, L., and H. Chu, "Password Policy + for LDAP Directories", + draft-behera-ldap-password-policy-10 (work in progress), + August 2009. + + [ROSE] Rose, M., "The Little Black Book: Mail Bonding with OSI + Directory Services", ISBN 0-13-683210-5, 2001. + + [X.500] ISO/IEC JTC 1/SC21, "Information Processing Systems - Open + Systems Interconnection - The Directory: Overview of + Concepts, Models and Service", 1988. + + [UNIX] Institute of Electrical and Electronics Engineers and The + Open Group, "IEEE Std 1003.1, 2004 Edition, Single UNIX + Specification Version 3", IEEE Standard 1003.1, 2004. + + + + +Howard & Chu Expires February 10, 2010 [Page 26] + +Internet-Draft LDAP NameService Schema August 2009 + + + [PAM] Samar, V. and R. Schemers, "Unified Login with Pluggable + Authentication Modules (PAM)", OSF RFC 86.0, October 1995. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 27] + +Internet-Draft LDAP NameService Schema August 2009 + + +Appendix A. Example Entries + + The examples described in this section are provided to illustrate the + schema described in this draft. They are not meant to be exhaustive. + + The following entry is an example of the posixAccount class: + + dn: uid=lester,ou=people,dc=aja,dc=com + objectClass: top + objectClass: account + objectClass: posixAccount + uid: lester + cn: Lester the Nightfly + gecos: Lester + uidNumber: 10 + gidNumber: 10 + loginShell: /bin/csh + userPassword: {crypt}$X5/DBrWPOQQaI + homeDirectory: /home/lester + + This corresponds to the UNIX system password file entry: + + lester:X5/DBrWPOQQaI:10:10:Lester:/home/lester:/bin/sh + + The following entry is an example of the ipHost class: + + dn: cn=josie.aja.com,ou=hosts,dc=aja,dc=com + objectClass: top + objectClass: device + objectClass: ipHost + objectClass: bootableDevice + objectClass: ieee802Device + cn: josie.aja.com + cn: www.aja.com + ipHostNumber: 10.0.0.1 + macAddress: 00:00:92:90:ee:e2 + bootFile: mach + bootParameter: root=dan.aja.com:/nfsroot/peg + bootParameter: swap=dan.aja.com:/nfsswap/peg + bootParameter: dump=dan.aja.com:/nfsdump/peg + + This entry represents the host canonically josie.aja.com, also known + as www.aja.com. The Ethernet address and four boot parameters are + also specified. + + An example of the nisNetgroup class: + + + + + +Howard & Chu Expires February 10, 2010 [Page 28] + +Internet-Draft LDAP NameService Schema August 2009 + + + dn: cn=nightfly,ou=netgroup,dc=aja,dc=com + objectClass: top + objectClass: nisNetgroup + cn: nightfly + nisNetgroupTriple: (charlemagne,peg,dunes.aja.com) + nisNetgroupTriple: (lester,-,) + memberNisNetgroup: kamakiriad + + This entry represents the netgroup nightfly, which contains two + triples (the user charlemagne, the host peg, and the domain + dunes.aja.com; and, the user lester, no host, and any domain) and one + netgroup (kamakiriad). + + Finally, an example of the nisObject class: + + dn: nisMapName=tracks,dc=dunes,dc=aja,dc=com + objectClass: top + objectClass: nisMap + nisMapName: tracks + + dn: cn=Maxine,nisMapName=tracks,dc=dunes,dc=aja,dc=com + objectClass: top + objectClass: nisObject + cn: Maxine + nisMapName: tracks + nisMapEntry: Nightfly$4 + + This represents the NIS map tracks, and a single map entry. + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 29] + +Internet-Draft LDAP NameService Schema August 2009 + + +Appendix B. Affected Library Functions + + The following functions are typically found in the C libraries of + most UNIX and POSIX compliant systems [UNIX]. An LDAP search filter + string [RFC4515] which may be used to satisfy the function call is + included alongside each function name. Parameters are denoted by %s + and %d for string and integer arguments, respectively. Long lines + are broken: + + getpwnam() (&(objectClass=posixAccount)(uid=%s)) + getpwuid() (&(objectClass=posixAccount)(uidNumber=%d)) + getpwent() (objectClass=posixAccount) + getspnam() (&(objectClass=shadowAccount)(uid=%s)) + getspent() (objectClass=shadowAccount) + + getgrnam() (&(objectClass=posixGroup)(cn=%s)) + getgrgid() (&(objectClass=posixGroup)(gidNumber=%d)) + getgrent() (objectClass=posixGroup) + + getservbyname() (&(objectClass=ipService)(cn=%s) + (ipServiceProtocol=%s)) + getservbyport() (&(objectClass=ipService)(ipServicePort=%d) + (ipServiceProtocol=%s)) + getservent() (objectClass=ipService) + + getrpcbyname() (&(objectClass=oncRpc)(cn=%s)) + getrpcbynumber() (&(objectClass=oncRpc)(oncRpcNumber=%d)) + getrpcent() (objectClass=oncRpc) + + getprotobyname() (&(objectClass=ipProtocol)(cn=%s)) + getprotobynumber() (&(objectClass=ipProtocol) + (ipProtocolNumber=%d)) + getprotoent() (objectClass=ipProtocol) + + gethostbyname() (&(objectClass=ipHost)(cn=%s)) + gethostbyaddr() (&(objectClass=ipHost)(ipHostNumber=%s)) + gethostent() (objectClass=ipHost) + + getnetbyname() (&(objectClass=ipNetwork)(cn=%s)) + getnetbyaddr() (&(objectClass=ipNetwork)(ipNetworkNumber=%s)) + getnetent() (objectClass=ipNetwork) + + setnetgrent() (&(objectClass=nisNetgroup)(cn=%s)) + getpublickey() (&(objectClass=nisKeyObject)(...)) + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 30] + +Internet-Draft LDAP NameService Schema August 2009 + + +Appendix C. Suggested DIT structure + + The cn attribute is typically used to name entities. The + ipHostNumber, ipNetworkNumber, and ipServiceProtocol attributes are + also naming attributes, such that multi-valued RDNs may be used to + distinguish between, for example, different interfaces of a + multihomed host. + + The following DIT structure MAY be used for deploying this schema. + It is not required that DC-naming be used, but it is encouraged: + + Naming context ObjectClass + ============================================================ + ou=people,dc=... posixAccount + shadowAcount + ou=group,dc=... posixGroup + ou=services,dc=... ipService + ou=protocols,dc=... ipProtocol + ou=rpc,dc=... oncRpc + ou=hosts,dc=... ipHost + ou=ethers,dc=... ieee802Device + bootableDevice + ou=networks,dc=... ipNetwork + ou=netgroup,dc=... nisNetgroup + nisMapName=...,dc=... nisObject + automountMapName=...,dc=... automountMap + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 31] + +Internet-Draft LDAP NameService Schema August 2009 + + +Authors' Addresses + + Luke Howard + PADL Software Pty. Ltd. + PO Box 59 + Central Park, Vic 3145 + AU + + Email: lukeh@padl.com + + + Howard Chu (editor) + Symas Corp. + 18740 Oxnard Street, Suite 313A + Tarzana, California 91356 + US + + Phone: +1 818 757-7087 + Email: hyc@symas.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Howard & Chu Expires February 10, 2010 [Page 32] +