// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
URI uri = URIBuilder.newBuilder()
.scheme("ldaps")
.loopback()
.port(serverPort)
.build();
env.put(Context.PROVIDER_URL, uri.toString());
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "GSSAPI");
// read properties for (int i = 2; i < args.length; i += 2) {
env.put(args[i], args[i + 1]); if (debug)
System.out.println("Env=" + args[i] + "=" + args[i + 1]);
}
try {
DirContext ctx = new InitialDirContext(env);
passed = shouldPass;
ctx.close();
} catch (NamingException ne) { // only NamingException is allowed if (debug)
System.out.println("Exception=" + ne + " cause=" + ne.getRootCause());
passed = handleNamingException(ne, shouldPass, shouldConnect);
} catch(Exception e) {
System.err.println("Failed: caught an unexpected Exception - " + e); throw e;
} finally { // test if internal property accessible to application if(shouldPass &&
env.get("jdk.internal.sasl.tlschannelbinding") != null) { thrownew Exception( "Test FAILED: jdk.internal.sasl.tlschannelbinding should not be accessible");
}
} if (!passed) { thrownew Exception( "Test FAILED: NamingException exception should be thrown");
}
System.out.println("Test PASSED");
}
privatestaticboolean handleNamingException(NamingException ne, boolean shouldPass, boolean shouldConnect) throws NamingException { if (ne instanceof AuthenticationException &&
ne.getRootCause() instanceof SaslException) {
SaslException saslEx = (SaslException) ne.getRootCause(); if (shouldConnect && saslEx.getCause() instanceof GSSException) { // SSL connection successful, expected exception from SaslClient if (shouldPass) returntrue;
}
} if (!shouldConnect) { // SSL handshake fails
Exception ex = ne; while(ex != null && !(ex instanceof CommunicationException)) {
ex = (Exception)ex.getCause();
} if (ex != null) { if (ex.getCause() instanceof SSLException) { if (!shouldPass) returntrue;
}
}
}
Throwable rc = ne.getRootCause(); if (!shouldPass && (rc == null || rc instanceof ChannelBindingException)) { // Expected exception caused by Channel Binding parameter inconsistency returntrue;
} throw ne;
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.