Subject: What's extensibleObject used for?
Author: eLDAP
Posted on: 01/30/2007 08:46:52 PM
extensibleObject is objectclass defined in RFC 2252 to allow for flexibility of adding and modifying attributes on the server side.
objectClasses: ( 1.3.6.1.4.1.1466.101.120.111 NAME 'extensibleObject' DESC 'LDAPv3 extensible object' SUP top AUXILIARY X-ORIGIN 'RFC 2252' )
For example, the following code
DirContext ctx = new InitialDirContext(env);
// Create attributes to be associated with object
Attributes attrs = new BasicAttributes(true); // case-ignore
Attribute objclass = new BasicAttribute("objectclass");
objclass.add("top");
objclass.add("person");
attrs.put(objclass);
attrs("sn", "Smith");
attrs("givenName", "John");
attrs("cn", "John Smith");
attrs("ssn", "999-99-9999");
// Perform bind
ctx.bind("cn=John Smith,ou=People,dc=myCompany,dc=Com", attrs);
is going to throw exception of '
InvalidAttributeIdentifierException', since attribute '
ssn' is not defined in MUST or MAY list of '
person'. For '
ssn' to be added into DIT, the '
extensibleObject' objectclass should be added to make any (extra) attributes valid.
DirContext ctx = new InitialDirContext(env);
// Create attributes to be associated with object
Attributes attrs = new BasicAttributes(true); // case-ignore
Attribute objclass = new BasicAttribute("objectclass");
objclass.add("top");
objclass.add("person");
objclass.add("extensibleObject");
attrs.put(objclass);
attrs("sn", "Smith");
attrs("givenName", "John");
attrs("cn", "John Smith");
attrs("ssn", "999-99-9999");
// Perform bind
ctx.bind("cn=John Smith,ou=People,dc=myCompany,dc=Com", attrs);
Definitely, your server must support the
extensibleObject objectclass anyway.
References: