Estou tentando acessar o AD do empresa com o seguinte código( este código eu tirei de um tópico no forum da Sun ):
public static void main( String[] args ) {
char separator = File.pathSeparatorChar;
Hashtable env = new Hashtable(5, 0.75f);
String adminName = "uid=trtrt@rtrtrt.com.br,ou=rtrtrt,dc=rtrt,dc=rtrt";
String password = rtrtrtrttr;;
String ldapURL = "ldap://rtrtrtrtrt:636";
DirContext dirContext = null;
SearchControls searchControls = null;
String keystore = null;
Attributes attributes = null;
//----------------------------------------------------------------------
keystore = "c:\\Sao Vicente\\CertificadoAD\\cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
// Credenciais de segurança
env.put(Context.SECURITY_AUTHENTICATION, "SIMPLE");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, password);
// Setando SSL no protocolo
env.put(Context.SECURITY_PROTOCOL, "ssl");
// Conexão com o dominio de controle
env.put(Context.PROVIDER_URL, ldapURL);
try{
// Criando contexto inicial para o diretorio
dirContext = new InitialLdapContext(env, null);
// Criando controle de busca
searchControls = new SearchControls();
// Especificando atributos de retorno
String atributosRetorno[] = {"sn", "givenName", "mail"};
searchControls.setReturningAttributes(atributosRetorno);
// Especificando o scopo da procura
searchControls.setSearchScope( SearchControls.SUBTREE_SCOPE );
// Especificando o filtro de procura LDAP
String filtroLDAP = "(&(objectClass=user)(mail=*))";
// Especificando a base para procura
String baseProcura = "DC=saovicente,DC=corp";
int totalResultados = 0;
// Procurando por objetos usando filtro
NamingEnumeration resposta = dirContext.search(baseProcura, filtroLDAP, searchControls);
while( resposta.hasMoreElements() ){
SearchResult resultadoProcura = (SearchResult)resposta.next();
totalResultados++;
System.out.println( ">>>" + resultadoProcura.getName() );
attributes = resultadoProcura.getAttributes();
if ( attributes != null ){
try{
System.out.println( "sn" + attributes.get("sn").get() );
System.out.println( "giveName" + attributes.get("giveName").get() );
System.out.println( "mail" + attributes.get("mail").get() );
}catch (NullPointerException e) {
// TODO: handle exception
}
}
}
System.out.println( "Total" + totalResultados );
dirContext.close();
}catch (NamingException e) {
// TODO: handle exception
e.printStackTrace();
//System.out.println( e.getMessage() );
}
}
A exception que esta ocorrenco é:
javax.naming.CommunicationException: simple bind failed: saovicente.corp:636 [Root exception is javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake]
at com.sun.jndi.ldap.LdapClient.authenticate(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)
at inicio.AcessoAD.main(AcessoAD.java:48)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at com.sun.jndi.ldap.Connection.writeRequest(Unknown Source)
at com.sun.jndi.ldap.LdapClient.ldapBind(Unknown Source)
... 12 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
... 20 more
Preciso de ajuda.
Alguém conhece a solução deste problema?
Grato pelo atenção!