olá pessoal,
criei uma estrutura para testes no LDAP e estou tentando recuperar os atributos de um nó especifico.
Estou tentando recuperar o atributo MEMBER. Só que está vindo apenas o primeiro que está sendo criado no script. É possível retornar vários atributos com o mesmo nome? Se não, como criar a estrutura para armazenar, por exemplo, uma lista de valores.
O objetivo desta função é passar por parâmetro uma String, no caso o valor de algum MEMBER, e retornar o perfil de acordo com o nome.
Desde já agradeço.
Abaixo está o código e o script.
[code]public String searchUser(String userName){
try{
Hashtable env = new Hashtable();
String sp = "com.sun.jndi.ldap.LdapCtxFactory";
env.put(Context.INITIAL_CONTEXT_FACTORY, sp);
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "uid=" + user + ",ou=system");
env.put(Context.SECURITY_CREDENTIALS, pass);
DirContext dctx = new InitialDirContext(env);
String base = "";
SearchControls sc = new SearchControls();
String[] attributeFilter = { "" };
sc.setReturningAttributes(attributeFilter);
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(objectClass=*)";
NamingEnumeration results = dctx.search(base, filter, sc);
while (results.hasMore()){
SearchResult sr = (SearchResult) results.next();
String _nameOfNode = sr.getName();
Attributes attrs = sr.getAttributes();
NamingEnumeration an = attrs.getAll();
try{
NamingEnumeration ab = attrs.getIDs();
Attribute abc = attrs.get("member");
System.out.println(abc.get());
}catch (Exception ertr){ertr.printStackTrace();}
String _attributes = "";
Vector<Attribute> vSource = new Vector<Attribute>();
// NAO IMPORTA QTOS ATRIBUTOS TENHA, ELE PEGA APENAS O PRIMEIRO !!!!
while (an.hasMoreElements()){
try{
Attribute a = (Attribute) an.next();
//System.out.println(" 1 - " + a.get());
//if (a.getID().toString().contains("member")){
if (a.get().toString().contains(userName)){
if (!_nameOfNode.toString().split(",")[0].contains(userName)){
System.out.println(_nameOfNode.split(",")[0].split("=")[1]);
}
}
}catch (Exception ert){ert.printStackTrace();}
}
}
}catch (Exception er){er.printStackTrace();}
return "";
}[/code]
dn: dc=example,dc=com
objectClass: domain
objectClass: extensibleObject
objectClass: top
dc: example
dn: o=caixa_amb,dc=example,dc=com
objectClass: organization
o: caixa_amb
dn: ou=usuarios,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: usuarios
dn: ou=useradmin,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: useradmin
dn: ou=admin,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: admin
dn: ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: aplicacoes
dn: ou=aplicacao01, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: aplicacao01
dn: ou=simbrasil, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
ou: simbrasil
dn: ou=perfil_admin, ou=simbrasil, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
objectClass: extensibleObject
member: cn=Pedro, ou=usuarios, o=caixa_amb, dc=example, dc=com
member: cn=Cesar, ou=useradmin, o=caixa_amb, dc=example, dc=com
member: cn=sa, ou=useradmin, o=caixa_amb, dc=example, dc=com
postalCode: 1234567
ou: perfil_admin
dn: ou=perfil_usuario, ou=simbrasil, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
postalCode: 98765432
ou: perfil_usuario
dn: ou=perfil_1, ou=aplicacao01, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
postalCode: 2222222
ou: perfil_1
dn: ou=perfil_2, ou=aplicacao01, ou=aplicacoes,o=caixa_amb,dc=example,dc=com
objectClass: organizationalUnit
postalCode: 111111
ou: perfil_2
dn: cn=Jose Carlos, ou=admin, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: Jose Carlos
sn: Jose Carlos
dn: cn=Ze, ou=admin, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: Ze
sn: Ze
dn: cn=Antonio, ou=usuarios, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: Antonio
sn: Antonio
dn: cn=Pedro, ou=usuarios, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: Pedro
sn: Pedro
dn: cn=sa, ou=useradmin, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: sa
sn: sa
dn: cn=Cesar, ou=useradmin, o=caixa_amb, dc=example, dc=com
objectClass: organizationalPerson
cn: Cesar
sn: Cesar