1.11 LDAP and eDirectory Schema

Although both the LDAP schema and the eDirectory schema are based on X.500, some of the implementation details are quite different with each being more restrictive in some areas and less restrictive in other areas. The following sections describe some of these differences:

1.11.1 Schema Naming Rules

eDirectory supports different rules for naming object class definitions and attribute definitions. For example, eDirectory allows spaces and punctuation characters in the name. These conventions are incompatible with LDAP naming conventions, which restrict the name to alphabetical characters, no spaces, and one punctuation character, the hyphen.

The LDAP server in NDS eDirectory automatically maps the attributes and classes defined by RFC 2256 to their LDAP equivalent names. (For a list, see the LDAP Name index in the NDK: Novell eDirectory Schema Reference.) If LDAP clients need access to the other eDirectory classes and attributes that have incompatible names, the system administrator needs to use ConsoleOne to manually map them to an LDAP compatible name.

Even if the name is compatible with LDAP conventions, an LDAP client may not be able to access the attribute because the attribute's syntax is not supported by the LDAP server. For a list of supported syntax definitions, see Syntax Definitions.

The following paragraphs describe a couple of special cases for object class definitions.

User and inetOrgPerson: By default, inetOrgPerson is mapped to the NDS User object class, and you can access this class using the LDAP names of inetOrgPerson or user. By default, the User class definition does not contain all the standard attributes for inetOrgPerson. To add these attributes to the User class definition, the system administrator must run a schema file (nov_inet.sch). In NDS eDirectory, Novell also supplies a schema file that creates an inetOrgPerson class with the standard LDAP attributes. Your application will need to read the schema and the directory to determine which class contains the users for the system.

residentialPerson: In NDS eDirectory, Novell supplies a schema file that adds the residentialPerson class definition to the schema with the standard LDAP attributes. Your application will need to read the schema to determine if the system administrator has added this class to the schema.

1.11.2 Schema Mapping

Since the eDirectory schema has many class and attribute definitions with illegal LDAP names, these definitions must be mapped to a legal LDAP name. All LDAP servers in the eDirectory tree must map the same LDAP class or attribute to the same eDirectory class or attribute. Each version of eDirectory has made this mapping easier:

  • In NDS eDirectory 8.3x, all standard LDAP attribute and class definitions are mapped to the corresponding eDirectory attribute or class definitions when eDirectory is installed. The NDK: Novell eDirectory Schema Reference contains an index to these LDAP names. If the schema is extended with classes and attributes that use invalid LDAP names, these classes and attributes need to be manually mapped to valid LDAP names.

  • In NDS eDirectory 8.5, all eDirectory attribute and class definitions can be accessed from LDAP by using the eDirectory name with the colon and spaces removed. Also, any required mappings can be processed from an LDIF file during installation.

From ConsoleOne, system administrators can add mappings for classes and attributes that are not automatically mapped. The LDAP server needs to be stopped and started to make the mapped attributes and classes visible from LDAP.

1.11.3 LDAP Operational Attributes

In eDirectory, not all information about an entry is kept in attributes, for example, an entry's base class, last modified time, or creation time. Through NDAP, eDirectory has made this information available through DSI flags. In NDS eDirectory 8.5, this information is available through LDAP as operational attributes. The information is read-only. Clients cannot modify the attributes.

These attributes are not returned in search results unless explicitly requested by name. NDS eDirectory 8.5 supports the following operational attributes on all entries in the directory.

Table 1-9 LDAP Operational Attributes

Operation Attribute

Description

createTimeStamp

Contains when the entry was created.

Standard LDAP attribute (RFC 2252).

creatorsName

Contains the distinguished name of the user that created this entry.

Standard LDAP attribute (RFC 2252).

entryFlags

Contains information about an entry's state, for example whether the entry is an alias, a partition, or a container.

eDirectory-specific attribute.

federationBoundary

Contains where the federation boundary begins for a DNS-rooted tree.

eDirectory-specific attribute.

localEntryID

Contains the record number for the entry in the server's local database.

eDirectory-specific attribute.

modifiersName

Contains the distinguished name of the last user that modified this entry.

Standard LDAP attribute (RFC 2252).

modifyTimeStamp

Contains when the entry was last modified.

Standard LDAP attribute (RFC 2252).

structuralObjectClass

Contains the base class of the entry.

Standard LDAP attribute.

subordinateCount

Contains the number of entries immediately subordinate to this entry.

eDirectory-specific attribute.

subschemaSubentry

Contains the LDAP name for the schema.

Standard LDAP attribute (RFC 2252).

For more information, see Subschema Subentry Attributes.

For more information, see LDAP Operational Attributes in the NDK: Novell eDirectory Schema Reference.

1.11.4 Root DSE Attributes

The LDAP server maintains the root DSE attributes, and clients can read these attributes but cannot modify them. The Novell LDAP server supports the following attributes.

Table 1-10 Root DSE Attributes

Attribute

Description

NDS/eDirectory Version

namingContexts

Contains the distinguished names of the naming contexts (or replicas) on the LDAP server.

Standard LDAP attribute (RFC 2252).

8.x

altServer

Contains the name of alternative servers if this one is unavailable in subsequent requests

Standard LDAP attribute (RFC 2252)..

8.5

supportedExtension

Contains a list of OIDs that identify supported extended operations.

Standard LDAP attribute (RFC 2252).

8.x

supportedControl

Contains a list of OIDs that identify supported controls.

Standard LDAP attribute (RFC 2252).

8.x . In version 85, controls are not advertized.

supportedSASLMechanisms

Contains a list of supported SASL security features.

Standard LDAP attribute (RFC 2252).

8.5

supportedLDAPVersion

Contains a list of LDAP versions implemented by the server.

Standard LDAP attribute (RFC 2252).

8.x

subschemaSubentry

Contains the distinguished name of the subschema subentry which is the name of the schema for this server.

For eDirectory, this is always cn=schema.

Standard LDAP attribute (RFC 2252).

8.x

vendorName

Contains a string with the name of the company.

eDirectory-specific attribute.

8.5

vendorVersion

Contains the LDAP server version.

eDirectory-specific attribute.

8.5

directoryTreeName

Contains the eDirectory tree name.

eDirectory-specific attribute.

8.5

dsaName

Contains the distinguished name of the server.

eDirectory-specific attribute.

8.5

In a DNS-rooted tree, you can find the federation boundary by one of the following methods:

  • Using the namingContext attribute, search one of the naming contexts for its federationBoundary attribute.

  • Using the dsaName attribute, search the server for its federationBoundary attribute. Use this method only if a naming context is not available.

1.11.5 Subschema Subentry Attributes

Clients must specifically request attribute information about the subschema entry. It is never returned in a generic request to read all information about all entries. Clients must request a base object search with the search filter set to the following: "objectClass=subschema"

The Novell LDAP server supports the following attributes.

Table 1-11 Subschema Subentry Attributes

Attribute

Description

NDS/eDirectory Version

cn

Contains the RDN of the subschema entry.

8.x

objectClasses

Contains a value for each object class known by the LDAP server.

8.x

objectClass

Contains the parent object classes of the subschema subentry.

It always contains two classes: top and subschema.

8.x

attributeTypes

Contains a value for each attribute definition known by the LDAP server.

8.x

ldapSyntaxes

Contains a value for each syntax definition known by the LDAP server.

8.5

Clients add attribute definitions and object classes to the schema by adding values to the attributeTypes and objectClasses attributes of the subentry.

1.11.6 Attribute Flags

eDirectory supports numerous attribute definition flags that affect the type of data an attribute can contain and that control its synchronization schedule. The LDAP server in NDS eDirectory can set and get information about the following eDirectory extended flags. By default, when creating an attribute definition, none of these flags are set. To obtain the information when reading the schema, you must send the flag with the request to read the attribute.

Table 1-12 eDirectory Extended Attribute Flags

Extended LDAP Flags

Description

X-NDS_PUBLIC_READ

When set, allows anyone to read the attribute's value even though such rights have not been granted or inherited. Using this flag makes access to the attribute extremely efficient because eDirectory performs no rights checking.

When not set, users must have been granted rights or inherit rights to read the attribute's value.

In NDAP, this is equivalent to the DS_PUBLIC_READ flag set to True.

X-NDS_SERVER_READ

When set, allows the NCP Server object to read the attribute's value even though such rights have not been granted or inherited.

When not set, the NCP Server object must be granted rights or inherit rights to read the attribute's value.

In NDAP, this is equivalent to the DS_SERVER_READ flag set to True.

X-NDS_NEVER_SYNC

When set, prevents changes to this attribute from synchronizing with other replicas. The information in the attribute is specific to the replica.

When not set, changes to the attribute are synchronized to other replicas.

In NDAP, this is equivalent to the DS_PER_REPLICA flag set to True.

X-NDS_NOT_SCHED_SYNC_IMMEDIATE

When set, allows the attribute's value to change without scheduling synchronization, and synchronization will start within 30 minutes.

When not set, causes any changes to the attribute to schedule immediate synchronization (within 10 seconds).

In NDAP, this is equivalent to the DS_SYNC_IMMEDIATE flag set to False.

X-NDS_SCHED_SYNC_NEVER

When set, allows the attribute's value to change without scheduling synchronization. The attribute can wait until the next scheduled synchronization cycle to propagate its changes.

When not set, causes any changes to the attribute to schedule synchronization.

Developers can only read this flag.

In NDAP, this is equivalent to the DS_SCHEDULE_SYNC_NEVER flag set to True.

X-NDS_LOWER_BOUND

When set, specifies the lower boundary for a string or integer syntax.

When not set, the attribute has no lower boundary.

In NDAP, this is equivalent to the DS_SIZED_ATTR flag set to True

X-NDS_NAME_VALUE_ACCESS

This flag only works on attributes which use a DN syntax and contain a list of entries, such as groupMembership.

When set, requires users to have supervisor rights to the entry before they can add or delete the entry as a value for this attribute.

When not set, requires the user to have read rights to read the values and write rights to modify the values.

In NDAP, this is equivalent to the DS_WRITE_MANAGED flag set to True.

X-NDS_NAME

When creating an attribute, specifies the legacy eDirectory attribute that automatically maps to this LDAP attribute. This is new in NDS eDirectory 8.5 and should be used to make attributes available to previous versions of the LDAP server in an eDirectory tree.

When reading the attribute definition, returns the legacy eDirectory attribute name.

X-NDS_ACL_TEMPLATES

Every object in the NDS tree has an ACL attribute. This attribute holds information about which trustees have access to the object itself (entry rights) and which trustees have access to the attributes for the object.

This information is stored in sets of information containing the following:

  • The trustee name

  • The affected attribute-[Entry Rights], [All Attributes Rights], or a specific attribute

  • The privileges

ACL templates helps us in defining ACLs for specific classes in the base schema and provide a minimum amount of access security for newly created objects.

This flag was added in 8.7.0.

The standard LDAP attribute flags can also be used. The following table lists the LDAP name and the corresponding NDAP name.

Table 1-13 Standard LDAP Attribute Flags

Standard LDAP Flags

NDAP Flag

SINGLE-VALUE

DS_SINGLE_VALUED_ATTR set to True

COLLECTIVE

Not supported

NO-USER-MODIFICATION

DS_READ_ONLY_ATTR set to True

USAGE userApplications

None required. This sets the attribute as a normal attribute. The other USAGE flags can only be set by eDirectory.

USAGE directoryOperation

DS_OPERATIONAL (set by eDirectory)

USAGE distributedOperation

DS_OPERATIONAL (set by eDirectory)

USAGE dSAOperation

DS_OPERATIONAL (set by eDirectory)

1.11.7 Object Class Flags

eDirectory uses a set of flags to define allowable class operations. When adding a new object class definition to the schema, you can set the following flags. When reading definitions, you send the flags to obtain the information.

Table 1-14 eDirectory Extended Object Class Flags

Extended LDAP Flags

Description

X-NDS_NOT_CONTAINER

When set, indicates that this object class cannot contain other entries and is thus a leaf entry.

When not set, indicates that this object class can contain other entries and is thus a container class.

In NDAP, this is equivalent to the DS_CONTAINER_CLASS flag set to False.

X-NDS_CONTAINMENT

When included, this flag is followed by a list of object classes that can be the parent container of the object class that is being defined.

When not included, the object class that is being defined is automatically assigned containment classes of country, organization, organizationalUnit, locality, and domain.

In NDAP, this is equivalent to the DS_AMBIGUOUS_CONTAINMENT flag set to False.

X-NDS_NAMING

When included, this flag is followed by the list of attributes that can be used to name entries based on this object class definition.

When not included, the naming attributes for the object class are all of the MAY and MUST attributes that use a string-type syntax.

In NDAP, this is equivalent to the DS_AMBIGUOUS_NAMING flag set to False.

X-NDS_NONREMOVABLE

When set, indicates that the class cannot be removed even if no entries are using the definition. This flag is placed on all classes in the eDirectory operational schema. NDS 8 and higher allow application developers to set this flag.

When not set, indicates that the class can be removed from the schema if no entries are using the definition.

In NDAP, this is equivalent to the DS_NONREMOVABLE_CLASS flag set to True.

X-NDS_NAME

When defining an object class, specifies the legacy eDirectory object class that automatically maps to this LDAP class. This is new in NDS eDirectory 8.5 and should be used to make classes available to previous versions of the LDAP server in an eDirectory tree.

When reading object class definitions, returns the legacy eDirectory name for this object class.

The standard LDAP class flags can also be used. The following table lists the LDAP name and the corresponding NDAP name.

Table 1-15 Standard LDAP Flags

Standard LDAP Flags

NDAP FLag

ABSTRACT

DS_EFFECTIVE_CLASS set to False

STRUCTURAL

DS_EFFECTIVE_CLASS set to True

AUXILIARY

DS_AUXILIARY_CLASS set to True

1.11.8 Syntax Definitions

The LDAP server allows LDAP access to eDirectory attributes if the eDirectory attribute uses an LDAP compatible syntax. For example, this makes all eDirectory attributes that use the Case Ignore String syntax available through LDAP because LDAP supports the Case Ignore String syntax. eDirectory attributes that use a compound syntax (such as the Timestamp syntax with its fields for time, replica number, and event identifier) are not automatically accessible through LDAP. The LDAP server has made most of these syntax definitions available.

The LDAP server supports the following eDirectory syntax definitions. The eDirectory column lists the minimum version of eDirectory for the LDAP server to support the syntax.

Table 1-16 eDirectory Syntax Definitions

NDS Name

LDAP Descriptive Name

OID

NDS

SYN_STREAM

Binary

1.3.6.1.4.1.1466.115.121.1.5

7.xx

SYN_BOOLEAN

Boolean

1.3.6.1.4.1.1466.115.121.1.7

7.xx

SYN_DIST_NAME

DN

1.3.6.1.4.1.1466.115.121.1.1 1.3.6.1.4.1.1466.115.121.1.12

7.xx

SYN_CI_STRING

Directory String

1.3.6.1.4.1.1466.115.121.1.3 1.3.6.1.4.1.1466.115.121.1.11 1.3.6.1.4.1.1466.115.121.1.15 1.3.6.1.4.1.1466.115.121.1.16 1.3.6.1.4.1.1466.115.121.1.17 1.3.6.1.4.1.1466.115.121.1.54 1.3.6.1.4.1.1466.115.121.1.57 1.3.6.1.4.1.1466.115.121.1.30 1.3.6.1.4.1.1466.115.121.1.31 1.3.6.1.4.1.1466.115.121.1.32 1.3.6.1.4.1.1466.115.121.1.33 1.3.6.1.4.1.1466.115.121.1.34 1.3.6.1.4.1.1466.115.121.1.35 1.3.6.1.4.1.1466.115.121.1.37 1.3.6.1.4.1.1466.115.121.1.38 1.3.6.1.4.1.1466.115.121.1.39

7.xx

SYN_FAX_NUMBER

Facsimile Telephone Number

1.3.6.1.4.1.1466.115.121.1.22

7.xx

SYN_TIME

Generalized Time

1.3.6.1.4.1.1466.115.121.1.24

7.xx

SYN_CE_STRING

IA5 String

1.3.6.1.4.1.1466.115.121.1.26

7.xx

SYN_INTEGER

Integer

1.3.6.1.4.1.1466.115.121.1.27

7.xx

SYN_INTERVAL

Integer

1.3.6.1.4.1.1466.115.121.1.21 1.3.6.1.4.1.1466.115.121.1.27

7.xx

SYN_NU_STRING

Numeric String

1.3.6.1.4.1.1466.115.121.1.36

7.xx

SYN_CLASS_NAME

OID

1.3.6.1.4.1.1466.115.121.1.38

7.xx

SYN_OCTET_STRING

Octet String

1.3.6.1.4.1.1466.115.121.1.1 1.3.6.1.4.1.1466.115.121.1.2 1.3.6.1.4.1.1466.115.121.1.4 1.3.6.1.4.1.1466.115.121.1.6 1.3.6.1.4.1.1466.115.121.1.8 1.3.6.1.4.1.1466.115.121.1.9 1.3.6.1.4.1.1466.115.121.1.10 1.3.6.1.4.1.1466.115.121.1.13 1.3.6.1.4.1.1466.115.121.1.14 1.3.6.1.4.1.1466.115.121.1.18 1.3.6.1.4.1.1466.115.121.1.19 1.3.6.1.4.1.1466.115.121.1.20 1.3.6.1.4.1.1466.115.121.1.21 1.3.6.1.4.1.1466.115.121.1.23 1.3.6.1.4.1.1466.115.121.1.25 1.3.6.1.4.1.1466.115.121.1.28 1.3.6.1.4.1.1466.115.121.1.56 1.3.6.1.4.1.1466.115.121.1.29 1.3.6.1.4.1.1466.115.121.1.55 1.3.6.1.4.1.1466.115.121.1.40 1.3.6.1.4.1.1466.115.121.1.43 1.3.6.1.4.1.1466.115.121.1.42 1.3.6.1.4.1.1466.115.121.1.58 1.3.6.1.4.1.1466.115.121.1.45 1.3.6.1.4.1.1466.115.121.1.46 1.3.6.1.4.1.1466.115.121.1.47 1.3.6.1.4.1.1466.115.121.1.48 1.3.6.1.4.1.1466.115.121.1.49 1.3.6.1.4.1.1466.115.121.1.51 1.3.6.1.4.1.1466.115.121.1.52 1.3.6.1.4.1.1466.115.121.1.53

7.xx

SYN_PO_ADDRESS

Postal Address

1.3.6.1.4.1.1466.115.121.1.41

7.xx

SYN_PR_STRING

Printable String

1.3.6.1.4.1.1466.115.121.1.44

7.xx

SYN_TEL_NUMBER

Telephone Number

1.3.6.1.4.1.1466.115.121.1.50

7.xx

 

 

 

 

SYN_UNKNOWN

Unknown

2.16.840.1.113719.1.1.5.1.0

7.xx

SYN_CI_LIST

Case Ignore List

2.16.840.1.113719.1.1.5.1.6

8.5

SYN_NET_ADDRESS

Tagged Data

2.16.840.1.113719.1.1.5.1.12

8.3x

SYN_OCTET_LIST

Octet List

2.16.840.1.113719.1.1.5.1.13

8.5

SYN_EMAIL_ADDRESS

Tagged String

2.16.840.1.113719.1.1.5.1.14

8.5

SYN_PATH

Tagged Name and String

2.16.840.1.113719.1.1.5.1.15

8.3x

SYN_REPLICA_POINTER

NDS Replica Pointer

2.16.840.1.113719.1.1.5.1.16

8.5

SYN_OBJECT_ACL

NDS ACL

2.16.840.1.113719.1.1.5.1.17

8.3x

SYN_TIMESTAMP

NDS Timestamp

2.16.840.1.113719.1.1.5.1.19

8.5

SYN_COUNTER

Counter

2.16.840.1.113719.1.1.5.1.22

8.5

SYN_BACK_LINK

Tagged Name

2.16.840.1.113719.1.1.5.1.23

8.5

SYN_TYPED_NAME

Typed Name

2.16.840.1.113719.1.1.5.1.25

8.5

Most of the definitions with Novell OIDs (2.16.840.1.113719) are structured and have multiple components. The LDAP server converts such a syntax to case ignore strings, using dollar ($) signs to separate fields of the same data type and (#) signs to separate fields of different data types. See Attribute Syntax Definitions in the NDK: Novell eDirectory Schema Reference for more information.

The SYN_HOLD syntax is not supported through LDAP and is being discontinued in eDirectory.

1.11.9 Auxiliary Classes versus Modifications to Class Definitions

eDirectory and LDAP have had very different conventions about modifying existing object class definitions. Once an object class has been defined in the schema,

  • LDAP conventions assume (1) that the attributes for the object class do not change, and (2) that any new attributes will be added through auxiliary classes to the entry rather than to the class definition.

  • eDirectory conventions allow applications to add new attributes to the class definitions, or with the release of NDS 8, to add new attributes to the entry through auxiliary classes rather than the class definition.

To maintain backwards compatibility with NDS releases prior to NDS 8, most eDirectory applications are still adding attributes to class definitions rather than to entries through auxiliary classes.

When accessing eDirectory, you must read the schema to discover all possible attributes for a class definition. If your application accesses more than one eDirectory tree, it must read the schema from each tree because the chance of the schemas being the same is very small.