Implementação LDAP e Java

O LDAP é um serviço de diretórios no qual os diretórios são disponibilizados no servidor em uma estrutura hierárquica e podem ser acessados remotamente pelos clientes. Neste tutorial será utilizada a implementação open source OpenLDAP do servidor LDAP para disponibilizar consultas a entidades de uma instituição fictícia utilizando a linguagem Java.

[ Hits: 49.691 ]

Por: João Lucas Pereira de Santana em 23/11/2009


Comunicação Java e LDAP



Para esta parte do tutorial utilizaremos uma biblioteca, a JLDAP, disponibilizada pela Novell para acessar o nosso diretório. Além do OpenLDAP, esta biblioteca também realiza comunicação com o Apache Directory Server.

No momento da escrita deste tutorial a última versão disponibilizada pela Novell é datada de 10 de outubro de 2009. O arquivo utilizado está no pacote 'novell-jldap-devel-2009.10.07-1unix.tar.gz', encontrado em Novell Developer.

Faça download do pacote .tar.gz mencionado anteriormente e descompacte-o, copie o arquivo ldap.jar que está dentro da pasta /lib para o diretório da sua aplicação.

Crie uma classe Java com nome LDAP com o seguinte conteúdo.

Arquivo LDAP.java:

/*Importa todas as classes do pacote com.novell.ldap.*/
import com.novell.ldap.*;

public class LDAP{

   public static void main(String[] args) throws Exception{

      /*Instancia um objeto LDAPConnection*/
      LDAPConnection conn = new LDAPConnection();

      /*Cria conexão com servidor 192.168.199.105 na porta 389*/
      conn.connect("192.168.199.105", 389);

      /*Efetua o bind no servidor passando a versão do servidor,
      o administrador do diretório
      e a senha como um array de bytes.*/

      conn.bind(LDAPConnection.LDAP_V3, "cn=Naza,dc=ufra,dc=br",
             "queroEntrar".getBytes());

      /*Realiza busca no servidor baseada nos seguintes parâmetros:
      --distinguished name da base de origem da busca;
      --escopo da busca, que também pode ser modificado para
        pesquisar na subárvore do distinguished name;
      --filtro por algum critério;
      --atributos a serem recuperados;
      --true para retornar apenas o nomes dos atributos,
        false para retornar nomes e valores dos atributos encontrados*/

      LDAPSearchResults search = conn.search(args[0], LDAPConnection.SCOPE_ONE,null, null, false);

      while(search.hasMore()){
         /*Recupera cada entidade presente no resultado.*/
         LDAPEntry entry = search.next();

         /*Retorna os atributos para cada entidade*/
         LDAPAttributeSet attribute = entry.getAttributeSet();

         java.util.Iterator it = attribute.iterator();
         /*Itera sobre os atributos imprimindo o nome e valor.*/
         while(it.hasNext()){
            LDAPAttribute att = (LDAPAttribute) it.next();

            System.out.println(att.getName() +"=>"+ att.getStringValue());

         }
         System.out.println();
      }
   }
}

Compile o arquivo e execute-o passando a subárvore de onde deve iniciar a busca. Por exemplo:

Compilando a classe LDAP:

# javac -classpath .:./ldap.jar LDAP.java

Caso não queira modificar seu classpath, compile e execute passsando-o como parâmetro como mostrado nos exemplos.

Executar passando o parâmetro dc=aluno,dc=ufra,dc=br retornará os subdiretórios de br/ufra/aluno, como mostrado no exemplo abaixo:

# java -classpath .:./ldap.jar LDAP dc=aluno,dc=ufra,dc=br

Esta execução retorna o seguinte:

ou=>agroboy
objectClass=>organizationalUnit

ou=>bichogrilo
objectClass=>organizationalUnit

ou=>computeiro
objectClass=>organizationalUnit

Executando o arquivo passando outro parâmetro.
java -classpath .:./ldap.jar LDAP ou=computeiro,dc=aluno,dc=ufra,dc=br

Retorno:
userPassword=>{SSHA}dyaOuUNnVQ04uRwq5k55KcwGgumOEZhp
uidNumber=>1010
uid=>rudini
loginShell=>/bin/bash
gecos=>Rudini AuAu PitBull
gidNumber=>100
sn=>PitBull
cn=>Rudini
homeDirectory=>/home/rudini
objectClass=>posixAccount

Agora que você sabe como consultar uma base LDAP usando Java, experimente criar métodos para inserção e remoção de entidades do banco de dados. Divirta-se! :-)

Este tutorial foi criado baseando-se nos materiais de aula da disciplina de Administração de Serviços de Redes de Computadores ofertada pelo Departamento de Ciência da Computação da Universidade Federal de Lavras, no tutorial de Rafael Felix do blog Rolling With Code, citado nos links abaixo, e na documentação fornecida pela Novell junto com os pacotes.

Alguns links interessantes:
*** Os nomes de pessoas e entidades usados neste tutorial são fictícios, não fazem referência a nenhum indivíduo e não é intenção do autor denegrir a imagem de qualquer indivíduo/entidade.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Configurando o OpenLDAP
   3. Inicializando o OpenLDAP
   4. Realizando consultas/inserções
   5. Comunicação Java e LDAP
Outros artigos deste autor

Uma introdução ao Linux-PAM

Leitura recomendada

Injeção de SQL

Entendendo o LDAP

Gerencie suas informações através de instruções SQL com selects turbinados (para leigos e experts)

Instalando o poderoso banco de dados IBM DB2!

Informix: Instalação - Configuração - Conceito

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts