Estou conseguindo fazer a autenticação normal no Action Directory, porém, gostaria de exibir em uma jsp após o usuario se autenticar todos os grupos que na qual ele pertence…
Estou tentando fazer a busca assim:
String entryDN = "dc=miqldc1,dc=microquimica,dc=int";
String uniqueMember="cn="+usuario+",ou=users,dc=miqldc1,dc=microquimica,dc=int";
NamingEnumeration results = null;
SearchControls search = new SearchControls();
search.setSearchScope(SearchControls.SUBTREE_SCOPE);
results = ctx.search(entryDN, "(&(objectClass=group)(member=" + uniqueMember + "))",
search);
while (results.hasMore()) {
SearchResult searchResult = (SearchResult) results.next();
Attributes attributes = searchResult.getAttributes();
Attribute attr = attributes.get("cn"); //Recuperando o CommonName do grupo
System.out.println(attr.get());
}
ctx.close();
Porém quando chamo o search, ele me lança essa exception:
Onde vc acha que pode ser?
No log de erro, ta me mostrando a que ocorreu na linha 65 que é onde eu chamo o SEARCH passando os parametros entryCN e uniqueMember
if(("logar").equals(request.getParameter("act"))){
String usuario = null;
String senha = null;
Hashtable env = new Hashtable(11);
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://00.0.0.0:389");
usuario = request.getParameter("usuario");
senha = request.getParameter("senha");
// Autentica o usuario com essas informações
env.put(Context.SECURITY_PRINCIPAL, usuario);
env.put(Context.SECURITY_CREDENTIALS, senha);
try {
// Cria o Initial Context
long init = System.currentTimeMillis();
DirContext ctx = new InitialDirContext(env); //Se passou deste ponto sem exeção, é porque autenticou
long fim = System.currentTimeMillis();
System.out.println("Autenticou normalmente: " + ((fim - init) / 1000) + " segundos");
String entryDN = "DC=miqldc1,DC=microquimica,DC=int";
String uniqueMember="cn="+usuario+"OU=Users, DC=miqldc1,DC=microquimica,DC=int";
NamingEnumeration results = null;
SearchControls search = new SearchControls();
search.setSearchScope(SearchControls.SUBTREE_SCOPE);
results = ctx.search(entryDN, "(&(objectClass=group)(member=" + uniqueMember + "))", search);
while (results.hasMore()) {
SearchResult searchResult = (SearchResult) results.next();
Attributes attributes = searchResult.getAttributes();
Attribute attr = attributes.get("cn"); //Recuperando o CommonName do grupo
System.out.println(attr.get());
}
ctx.close();
}catch(Exception ex){
System.out.println("Problema para autenticar : " + ex.getMessage());
ex.printStackTrace();
} finally {
out.close();
}
}
}