LDAP für Java-Entwickler

JNDI-Beispiel für LDAP Status Code 12 (unavailableCriticalExtension)

Durchführung einer Search-Operation gegen OpenLDAP 2.4, als Control wird eines mit dem unsinnigen OID "47.11" mitgesendet, dass als kritisch markiert ist. OpenLDAP quittiert das mit einem Statuscode 12 (unavailableCriticalExtension), der von JNDI auf eine javax.naming.OperationNotSupportedException gemappt wird.
  • LDAP-Server: OpenLDAP 2.4, Host: magritte, Port:389
  • Java-Version: Java 7, JUnit 4

Java-Quelltext

@Test(expected=OperationNotSupportedException.class)
public void unavailableCriticalExtension() throws NamingException {

  Hashtable<String, String> env = new Hashtable<>();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
  env.put(Context.PROVIDER_URL, "ldap://magritte:389/");

  String oid = "47.11";
  boolean isCritical = true;
  BasicControl control = new BasicControl(oid, isCritical, null);
  Control[] controls = { control };

  InitialLdapContext ctx = new InitialLdapContext(env, controls);
  ctx.list("");
}

Klicken Sie auf "Exception", um den Stacktrace zu sehen:

Exception