Este é um post disponível para assinantes MVPArtigo Java Magazine 74 - Primeiros passos com o Spring LDAP
Entenda os conceitos dessa poderosa ferramenta e aprenda a tirar melhor proveito do LDAP
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 74
Primeiros passos com o Spring LDAP
Conceitos básicos e utilização
Entenda os conceitos dessa poderosa ferramenta e aprenda a tirar melhor proveito do LDAP
De que trata o artigo:
Spring LDAP. Neste artigo são apresentados os principais conceitos relativos a essa biblioteca e exemplos do seu uso para efetuar consultas no LDAP. Além disso, é feita uma breve introdução à árvore LDAP e seus princípios.
Para que serve:
Fornecer uma alternativa simples e produtiva para acesso ao LDAP. O uso do LDAP em aplicações corporativas é um requisito de muitos sistemas, e o conhecimento de uma ferramenta flexível permite ao desenvolvedor construir consultas de forma mais rápida, simples e de manutenção mais fácil.
Em que situação o tema é útil:
O Spring LDAP facilita o uso do diretório LDAP em aplicações corporativas e embute mais produtividade à manipulação da árvore através do Java. A ferramenta é uma ótima alternativa para o desenvolvimento tradicional, baseado nas classes dos pacotes javax.naming e javax.naming.directory, oferecendo uma API extremamente rica e flexível.
Primeiros passos com o Spring LDAP:
Neste artigo são abordados os principais conceitos do LDAP e uma alternativa de uso – o Spring LDAP – é apresentada em detalhes. Um exemplo completo de consulta ao LDAP é explicado e demonstrado através de duas estratégias compatíveis: uso da API tradicional Java e uso da biblioteca Spring LDAP.
Além disso, demonstra-se de forma concisa como utilizar a biblioteca para executar operações CRUD sobre o LDAP. Assim, é possível entender as facilidades oferecidas pelo Spring LDAP e a vantagem de seu uso, tanto em termos de velocidade de desenvolvimento, quanto em compreensão do código escrito, manutenção e evolução.
Esse preconceito faz com que o LDAP não seja utilizado em sua potencialidade, e muitas das informações disponíveis nesse repositório acabam repetidas no banco de dados.
O Spring LDAP é uma ferramenta que simplifica o acesso ao LDAP, utilizando os conceitos difundidos pelo framework Spring. Essas facilidades permitem um uso mais completo e simples do LDAP e aproximam esse software dos desenvolvedores comuns.
LDAP: conceitos básicos
O LDAP (Lightweight Directory Access Protocol) é um dos protocolos mais conhecidos e utilizados em grandes corporações. Apesar de se tratar de um protocolo, o termo LDAP normalmente é utilizado para referir-se ao servidor LDAP, um serviço de diretório que é acessado via TCP/IP.
Assim como em qualquer serviço de diretório, a estrutura do LDAP é hierárquica e os objetos e atributos ali armazenados são distribuídos segundo uma ordem lógica (semelhante a uma estrutura de arquivos no sistema operacional). O LDAP na verdade é um banco de dados especializado e otimizado para operações de busca e leitura, o que torna as consultas significativamente mais performáticas que a escrita/atualização de dados. Exemplos conhecidos de servidores LDAP são: OpenLDAP, Apache Directory Server, Windows Active Directory e Sun LDAP Server.
Entendendo os detalhes
A árvore do LDAP pode armazenar qualquer tipo de informação. Normalmente associamos o LDAP a conceitos como segurança, usuários e grupos, mas também é possível (e comum) utilizá-lo para guardar informações sobre os ativos da corporação, como departamentos, computadores, impressoras, etc.
Em um diretório LDAP cada nó é denominado entrada (entry). A entrada representa um conjunto de atributos e cada atributo possui um tipo (também chamado de nome) e um ou mais valores. O tipo do atributo é um uma sigla intuitiva e significativa, como “cn” para “common name”, “o” para “organization”, etc. A Tabela 1 exibe alguns exemplos comuns.
Uma maneira simples de entender esse conceito é enxergar o DN como o caminho completo de um arquivo no disco rígido. O caminho é formado pelo nome do arquivo e todos os diretórios que definem sua localização. Por exemplo, para o arquivo /home/andre/teste.txt o RDN seria teste.txt e o DN /home/andre/teste.txt, que é formado pelo DN do nó pai (/home/andre/) + RDN do nó.
LDAP em aplicações Java EE
O uso do LDAP para autenticação e autorização é bastante comum, e a maioria dos servidores de aplicação oferece formas simples de acessá-lo. Em geral, configura-se um realm, que encapsula a consulta ao LDAP e permite integração ao JAAS, o serviço padrão de segurança para aplicações corporativas. O realm utiliza as classes e interfaces dos pacotes javax.naming e javax.naming.directory.
realm: Um realm é um repositório de usuários e grupos que possui mecanismos para identificar usuários válidos para uma aplicação (mais detalhes em http://java.sun.com/javaee/5/docs/tutorial/doc/bnbxj.html).
Acessando o LDAP de forma programática
Apesar da implementação JAAS de cada servidor de aplicação encapsular as consultas necessárias para autenticação e autorização de usuários contra a árvore do LDAP e esconder do desenvolvedor as particularidades envolvidas nessa comunicação, muitas vezes surge a necessidade de se consultar dados específicos de um usuário, como seu departamento, email, telefone, etc.
Esse procedimento exige codificar “no braço” o acesso e a consulta utilizando o protocolo. Obviamente Java permite esse tipo de consulta, mas o processo exige certo esforço e uma quantidade razoável de código de “infra-estrutura”.
A Listagem 1 mostra o acesso tradicional ao LDAP usando as APIs nativas. A Figura 1 ilustra a árvore utilizada no exemplo, enquanto a configuração do ambiente é detalhada no quadro “Configurando o ambiente”.
Para realizar a consulta no LDAP, o primeiro passo consiste em preencher as propriedades do contexto. As propriedades são armazenadas em um Hashtable e informam o endereço e porta do servidor LDAP além do nó inicial da árvore (o=codecompany). É importante notar que nenhuma credencial é fornecida, já que a conexão é feita em modo anônimo.
Hashtable
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:10389/o=codecompany");
A seguir o próprio contexto é criado e armazenado em uma variável do tipo DirContext. O contexto encapsula o acesso ao LDAP e permite que operações de busca, inclusão e exclusão de atributos e entradas seja executada a partir dessa variável.
DirContext ctx;
try {
ctx = new InitialDirContext(env);
} catch (NamingException e) {
throw new RuntimeException(e);
}
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Space do autor


2
0
