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
javax.naming.OperationNotSupportedException: [LDAP: error code 12 - critical extension is not recognized]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.ldap.InitialLdapContext.<init>(Unknown Source)
...