This document details a procedure for introducing an Active Directory (AD) compatible implementation of the eduPerson schema extensions into your AD based Directory Infrastructure. There are four sections to this document. The first provides some information about the eduPerson class and describes the environment where the deployment took place. The second section compares and contrasts the various implementation possibilities and outlines the changes that need to be made to your domain(s) and forest in order to bring Active Directory to a point where the schema extensions can be introduced The third section details why the “reference” eduPerson attribute definitions needed to be changed in order to work with AD and how the resulting implementation differs from the original. The final section details the procedure for injecting the eduPerson class into the AD schema.
But first some warning notes.
The eduPerson object class was developed by an EDUCAUSE/Internet2 working group. The aim of the group was to provide a set of directory attributes and definitions that can represent individuals in higher education. These attribute definitions are added to the schema of an adopting institution's directory by importing an LDIF file containing the definitions of each eduPerson class and its attributes. The problem from the point of view of an institution using a Microsoft based directory infrastructure is that AD supports an earlier set of syntax rules defining the type of data each attribute can hold. As it is not possible to add your own syntax rules to Active Directory, the LDIF file was rewritten to be compatible with AD.
These extensions were developed and have been implemented at the London School of Economics (LSE). Our directory infrastructure is centralised and our directory topology is reasonably straight forward. We have a single, central directory service - which is Active Directory. We have a single AD forest containing three domains. All of our domains are single site domains. Our primary root domain contains about 30,000 user and 4000 computer objects. We use the Kerberos KDC that is contained within AD, our DNS is AD integrated, as will our Certificate Authority be. By the completion of this project all of the servers in our AD forest will be running Windows Server 2003 and the forest will be in Windows 2003 native mode. The vast majority of our client computers are Windows based and are members of one of the AD domains. The ownership and management of the domains is also centralised. Two domains are under the ownership of the IT Services department, the other is 'owned' by one of the Schools research units, which has a similar commitment to keeping software up to date.
There are three routes through which the eduPerson class can be introduced into Active Directory. All of the routes result in a partial implementation. The longer routes allow you more flexibility, but at the cost of more work in upgrading Domain Controllers in domains other than the one you want to support the eduPerson class in. Each of the three routes is outlined below, along with the steps that are needed in each route to bring the directory to the point where the schema extensions can be installed. These tasks generally need to be conducted by someone with Enterprise administrator privileges. The notes below are aimed at someone who has the experience to act in that capacity. All of the routes assume you are running at least an environment based on Windows 2000. If you are running Windows NT, you will need to upgrade to Windows 2000 or Windows Server 2003 before you can support the eduPerson class.
This route provides the least comprehensive implementation of the eduPerson class but involves the least amount of change to your existing infrastructure. The domain you want to support the eduPerson class in must be running Windows 2000 and have Microsoft's inetOrgPerson schema extensions installed. The installation of the inetOrgPerson class is a necessary prerequisite because many of the attributes in the eduPerson specification are inetOrgPerson attributes. However, following this route would not give you a complete implementation of the eduPerson class, nor would this allow you to support future changes in the definition of the eduPerson class. The reasons for this are listed below:
Given the number of discrepancies and the fundamental nature of them we would not recommend proceeding down this route. However, if you did decide to, these are the steps you would need to take in order to be able to introduce the eduPerson class into your directory.
It is strongly recommended that you run through these procedures in an isolated test lab before you make any changes to your live domain and forest. At the very least, you should go through the process of making schema modifications on a test version of the Active Directory server, which has no connection with your production system. A better understanding of any possible side effects would be found by constructing a standalone network that reproduces the key features of your production environment.
This route implements the eduPerson class with a compliant set of inetOrgPerson attributes. It does involve a substantial amount of change to your directory service infrastructure, but does not involve upgrading all the domains in your forest. However, this route does affect your options in the future. The known limitations are listed below:
These are the steps you would need to take in order to be able to introduce the eduPerson class into your directory. It is strongly recommended that you run through these procedures in a isolated test lab before you make any changes to your live domain and forest. At the very least you should go through the upgrade process and the process of making schema modifications on a separate standalone test Active Directory server. A better understanding of any possible side effects would be found by constructing a standalone network that reproduces the key features of your live domain.
This route sees every Domain Controller in the Active Directory forest is upgraded to Windows Server 2003, and the functional level of the forest is raised to Windows 2003. This route will give you as complete support for the eduPerson class as you are going to get. If you have a large forest, the upgrading of every domain controller in every domain will be a substantial undertaking. The benefit of following this route will be to allow you to support the modification of class attributes after they have been added to the schema. It is however a feature of Active Directory that once introduced a class or an attribute cannot be deleted (it can only be disabled) - once introduced, the class definition is going to be in your Active Directory for the long term. Also, once the functional level of a domain or forest has been raised it cannot be changed back again. When the functional level is raised to Windows 2003 in a domain, any new domain controller you add can only be running Windows Server 2003.
These are the steps you need to take to introduce the eduPerson class into your directory. It is strongly recommended that you run through these procedures in a isolated test lab before you make any changes to your live domain and forest. At the very least you should go through the upgrade process and the process of making schema modifications on a separate standalone test Active Directory server. A better understanding of any possible side effects would be found by constructing a standalone network that reproduces the key features of your live domain.
This section details why the eduPerson class used with Active Directory differs from the class maintained by eduCause, and documents where the differences lie. The eduPerson Object Class constitutes the 'reference' version.
The eduPerson specification document (as at December 2003) uses 43 attributes to describe an individual within a higher education establishment. These 42 attributes are drawn from four different object classes; 9 from the eduPerson object class, 19 attributes from the inetOrgPerson class, 9 attributes from the orgPerson class and 5 attributes from the person class -one other attribute is defined but it is suggested that its use be avoided.
The version of Active Directory supplied with Windows Server 2003 contains compliant definitions for the person, orgPerson and inetOrgPerson classes, so the implementation task is one of introducing the nine attributes in the eduPerson class into the AD schema. The 'reference' version of the eduPerson class is supplied as an ldif file, sites import this to modify their schema. There are two problems with using the ldif file supplied by eduCause with Active Directory. The first is that the attributes for the eduPerson class are defined using an LDAP syntax defined in RFC2252, 'Lightweight directory access protocol (v3): attribute syntax definitions'. Active Directory does not support this attribute syntax, instead it uses an older and more limited X500 syntax. The other problem is that RFC2252 describes a set of equality matching rules for attributes, it is not possible to alter the matching rules beyond the default behaviour of the attribute using the X500 syntax. The ldif file that is supplied here is a rewrite of eduCause's 'reference' attributes using the older attribute definitions supported by Active Directory. The resulting ldif file therefore does not implement the class exactly as defined by eduCause. Nevertheless, in our tests we found that the attribute specification using the X500 syntax gave us the behaviour we wanted.
The section below outlines each of the attributes in the eduPerson class and how they are implemented in the AD specific ldif, and how each attribute differs from its definition in the 'reference' class.
More information about how syntaxes work in Active Directory can be found on the MSDN website. Search for “characteristics of attributes” and “Syntaxes for Active Directory Attributes” at MSDN.
This attribute specifies the person's relationship(s) to the institution in broad categories such as student, faculty, staff, alum, etc. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.1 NAME 'eduPersonAffiliation' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )
1.3.6.1.4.1.1466.115.121.1.15 is the RFC2252 OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode String) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonAffiliation attribute appears in the modified ldif file as:
dn: CN=eduPersonAffiliation,CN=Schema,CN=Configuration,DC=yourPlace,DC=edu changetype: add objectClass: attributeSchema name: eduPersonAffiliation description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.1 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:FALSE
This attribute is a URI (either URN or URL) that indicates a set of rights to specific resources. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.7 NAME 'eduPersonEntitlement' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )
1.3.6.1.4.1.1466.115.121.1.15 is the OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode string) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonEntitlement attribute appears in the modified ldif file as:
dn: CN=eduPersonEntitlement,CN=Schema,CN=Configuration,DC=yourPlace,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonEntitlement description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.7 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:FALSE
This attribute specifies the person's nickname, or the informal name by which they are accustomed to be hailed. The RFC2252 definition of the attribute in the 'reference' ldif is
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.2 NAME 'eduPersonNickname' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )
1.3.6.1.4.1.1466.115.121.1.15 is the OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode String) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonNickname attribute appears in the modified ldif file as:
dn: CN=eduPersonNickname,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonNickname description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.2 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:FALSE
This attribute is the distinguished name (DN) of the of the directory entry representing the institution with which the person is associated. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.3 NAME 'eduPersonOrgDN' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY distinguishedNameMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.12 is the OID of the ldap type LDAPTYPE_DN. The equivalent X500 syntax type is DN (aka distinguished name or DN String). Known within ADSI as ADSI_DN_STRING. The OID of the X500 syntax is 2.5.5.1, oMsyntax is 127.
The eduPersonOrgDN attribute appears in the modified ldif file as:
dn: CN=eduPersonOrgDN,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonOrgDN description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.3 attributeSyntax: 2.5.5.1 oMSyntax: 127 systemOnly: FALSE isSingleValued:TRUE
This attribute is defined as the distinguished name(s) (DN) of the directory entries representing the person's Organizational Unit(s). The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.4 NAME 'eduPersonOrgUnitDN' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY distinguishedNameMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )
1.3.6.1.4.1.1466.115.121.1.12 is the OID of the ldap type LDAPTYPE_DN. The equivalent X500 syntax type is DN (aka distinguished name or DN String). Known within ADSI as ADSI_DN_STRING. The OID of the X500 syntax is 2.5.5.1, oMsyntax is 127.
The eduPersonOrgUnitDN attribute appears in the modified ldif file as:
dn: CN=eduPersonOrgUnitDN,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonOrgUnitDN description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.4 attributeSyntax: 2.5.5.1 oMSyntax: 127 systemOnly: FALSE isSingleValued:FALSE
This attribute specifies the person's PRIMARY relationship to the institution in broad categories such as student, faculty, staff, alum, etc. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.5 NAME 'eduPersonPrimaryAffiliation' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.15 is the OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode String) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonPrimaryAffiliation attribute appears in the modified ldif file as:
dn: CN=eduPersonPrimaryAffiliation,CN=Schema,CN=Configuration,DC=yourPlace,DC=edu changetype: add objectClass: attributeSchema name: eduPersonPrimaryAffiliation description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.5 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:TRUE
This attribute is the distinguished name (DN) of the directory entry representing the person's primary Organizational Unit(s). The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.8 NAME 'eduPersonPrimaryOrgUnitDN' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY distinguishedNameMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE)
1.3.6.1.4.1.1466.115.121.1.12 is the OID of the ldap type LDAPTYPE_DN. The equivalent X500 syntax type is DN (aka distinguished name or DN String). Known within ADSI as ADSI_DN_STRING. The OID of the X500 syntax is 2.5.5.1, oMsyntax is 127.
dn: CN=eduPersonPrimaryOrgUnitDN,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonPrimaryOrgUnitDN description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.8 attributeSyntax: 2.5.5.1 oMSyntax: 127 systemOnly: FALSE isSingleValued:TRUE
This attribute is defined as the "NetID" of the person for the purposes of inter-institutional authentication. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.6 NAME 'eduPersonPrincipalName' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.15 is the OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode String) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonPrincipalName attribute appears in the modified ldif file as:
dn: CN=eduPersonPrincipalName,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonPrincipalName description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.6 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:TRUE
Specifies the person's affiliation within a particular security domain in broad categories such as student, faculty, staff, alum, etc. The RFC2252 definition of the attribute in the 'reference' ldif is:
attributetypes: ( 1.3.6.1.4.1.5923.1.1.1.9 NAME 'eduPersonScopedAffiliation' DESC 'eduPerson per Internet2 and EDUCAUSE' EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )
1.3.6.1.4.1.1466.115.121.1.15 is the OID of the ldap type LDAPTYPE_DIRECTORYSTRING. The equivalent X500 syntax type is Directory String (aka Unicode String) known within ADSI as ADSTYPE_CASE_IGNORE_STRING. The OID of the X500 syntax is 2.5.5.12, oMSyntax is 64.
The eduPersonScopedAffiliation attribute appears in the modified ldif file as:
dn: CN=eduPersonScopedAffiliation,CN=Schema,CN=Configuration,DC=lse,DC=ac,DC=uk changetype: add objectClass: attributeSchema name: eduPersonScopedAffiliation description: eduPerson per Internet2 and EDUCAUSE attributeID: 1.3.6.1.4.1.5923.1.1.1.9 attributeSyntax: 2.5.5.12 oMSyntax: 64 systemOnly: FALSE isSingleValued:TRUE
Once your sure your environment is ready, you need to introduce the modifications to your schema. The process, procedures and implications of extending the schema are detailed in the Active Directory Programmers Reference which can be found on Microsoft's MSDN web site (search for “Extending the Schema”). The procedure below is based on that.
It is strongly recommended that you run through this procedure in an isolated test lab before you make any changes to your live domain and forest. At the very least you should go through this procedure on a standalone test Active Directory server that is not connected to your forest.
It is assumed that you are introducing the schema changes into a Windows 2003 environment. If you are working with a Windows 2000 environment you need to make an additional step.
ldifde -i -f fileName.ldif -j c:\log.txt -c "DC=X" "DC=yourBaseDN"where:
For further information on setting up eduPerson on Active Directory, and how to populate the eduPerson attributes, see our associated LSE Active Directory Updater Description page.
Kouti, S. & Seitsonen, M. Inside Active Directory: a system administrator's guide. Addison-Wesley 2002.
Arkills, B. LDAP directories explained: an introduction and analysis. Addison-Wesley 2003.
Copyright © SECURe Project Team, 2004
Document last updated: 15/04/04