Você está na página 1de 3

LDAP e JNDI: Juntos para sempre

O Lightweight Directory Access Protocol (LDAP), que traça as suas raízes no protocolo X.500, foi
desenvolvido no início dos anos 1990 como um protocolo de diretórios padrão. LDAP define como
os clientes devem acessar dados no servidor, e não como os dados são armazenados no servidor.
Isso permite que o LDAP para se tornar um frontend para qualquer tipo de armazenamento de
dados.

(Nota: Para fazer o download do artigo completo código fonte isso, consulte o Recursos abaixo.)
estrutura básica do LDAP é baseado em uma informação simples metáfora da árvore chamada de
árvore de informações do diretório (DIT). Cada folha na árvore é uma entrada, a primeira ou a
entrada de nível superior é a entrada de raiz pares. Uma entrada inclui um nome distinto (DN) e
qualquer número de atributo / valor. O DN, que é o nome de uma entrada, deve ser exclusivo. Ele
mostra a relação entre a entrada eo resto da DIT em uma maneira similar ao modo como o arquivo
que o nome completo da mostra um caminho de suas relações com o resto dos arquivos em um
sistema de arquivos. Enquanto um caminho para um arquivo lido da esquerda para a direita, uma
DN, em contraste, lê da direita para a esquerda. Aqui está um exemplo de um DN:

o uid = styagi, ou = pessoas, = myserver.com

A parte mais à esquerda do DN, chamou um nome distinto relativo (RDN), é constituído de um
atributo / valor par. No exemplo acima, este par seria uid=styagi . Atributos LDAP
freqüentemente usam mnemônicos, alguns exemplos dos quais estão listados na Tabela 1.
o Organização
ou Unidade organizacional
cn Nome comum
sn Apelido
givenname Primeiro nome
uid Userid
dn Nome distinto
mail Endereço de email
A Tabela 1. Alguns atributos LDAP comuns

Informações sobre atributos, o atributo regras de correspondência, e as relações entre objectClasses


são definidos no esquema do servidor. Qualquer atributo pode ter um ou mais valores, dependendo
de como ele é definido no esquema. Um usuário, por exemplo, pode ter mais de um endereço de e-
mail. Há também um atributo especial chamado objectclass que especifica os atributos necessários e
permitidos para uma entrada específica. Como objetos em Java, objectClasses no LDAP pode ser
estendido para conservar os atributos existentes e adicionar novos.
Um serviço de nomes nomes associados com os objetos e localiza objetos com base em seus nomes.
(O registro RMI é um bom exemplo de um serviço de nomes.) Serviços de identificação Muitos são
estendidos com um serviço de diretório. Enquanto um serviço de nomes permite uma pesquisa de
um objeto com base em seu nome, um serviço de diretório também permite que tais objetos têm
atributos. Como resultado, com um serviço de diretório, podemos olhar para os atributos de um
objeto ou procurar objetos com base em seus atributos.
Então, onde se encaixa JNDI para este jargão LDAP? JNDI faz para LDAP o JDBC para o Oracle
faz - fornece um padrão API para interagir com nomes e serviços de diretório usando uma interface
de provedor de serviço (SPI), que é análogo a um driver JDBC. LDAP é uma maneira padrão de
fornecer acesso a informações de diretório. JNDI dá aplicativos Java e objetos de uma interface
poderosa e transparente para acessar serviços de diretório como o LDAP. Tabela 2 abaixo apresenta
LDAP operações comuns e seus equivalentes JNDI. (Para uma visão detalhada da especificação
JNDI, consulte Recursos .)
Operação O que faz equivalente JNDI
Pesquisa Pesquisar diretório DirContext.search()
correspondente entradas de
diretório
Compare Compare preços de entrada de DirContext.search()
diretório para um conjunto de
atributos
Adicionar Adicionar uma nova entrada de DirContext.bind() ,
diretório DirContext.createSubcontext()
Modificar Modificar uma entrada do DirContext.modifyAttributes()
diretório específico
Excluir Excluir uma entrada de Context.unbind() ,
diretório particular Context.destroySubcontext()
Renomear Renomear ou modificar o DN Context.rename()
Vincular Inicie uma sessão com um new InitialDirContext()
servidor LDAP
Desatar Terminar uma sessão com um Context.close()
servidor LDAP
Abandonar Abandonar uma operação Context.close() ,
previamente enviadas para o NamingEnumneration.close()
servidor
Extended Extended operations LdapContext.extendedOperation()
command
Tabela 2. LDAP operações comuns e equivalentes JNDI

Manipular objetos no servidor LDAP


Vamos direto ao assunto e veja como manipular os objetos no servidor LDAP. As operações LDAP
padrão incluem:
• Ligue para o servidor
• Ligar para o servidor (pense nisso como autenticação)
• Adicionar novas entradas no servidor LDAP
• Modificar uma entrada
• Apagar uma entrada
• Procura servidor para uma entrada

Vamos examinar cada uma dessas etapas nas seções a seguir, com exemplos.
Antes de executar os exemplos, você precisará instalar o servidor LDAP, as classes JNDI, e (a
menos que você deseja desativar a verificação do esquema) o esquema de Java. Você pode
encontrar informações de instalação no diretório do arquivo zip JNDI do esquema. Nossos
exemplos o uso do Netscape Directory Server 4.1 e JDK 2. (Para instalar esses pacotes, consulte
Recursos .)

Ligue para o servidor


Para se conectar ao servidor, você deve obter uma referência a um objeto que implementa a
DirContext interface. Na maioria das aplicações, isso é feito usando um
InitialDirContext objeto que tem uma Hashtable como um argumento. O Hashtable
contém várias entradas, como o hostname, porta e prestador de classes de serviço JNDI para usar:

Hashtable env = new Hashtable ();


env.put (Context.INITIAL_CONTEXT_FACTORY ", com.sun.jndi.ldap.LdapCtxFactory");
env.put (Context.PROVIDER_URL, "ldap: / / localhost: 389");
ctx = new DirContext InitialDirContext (env);

Ligar para o servidor


Uma vez conectado, o cliente pode precisar de autenticar-se, este processo também é conhecido
como ligação para o servidor). (Esteja ciente de que a palavra de ligação também pode se referir ao
ato de acrescentar algo para o diretório.
No LDAP versão 2, todos os clientes tivessem que se autenticar ao se conectar, mas a versão 3
padrões para anônimos e, se os valores padrão são usados, as ligações são anônimas também.
servidores LDAP manter os direitos usando listas de controle de acesso (ACLs) que determinam o
acesso especial está disponível para uma entrada por um aplicativo. LDAP suporta três diferentes
tipos de segurança:
• Simples: Autentica rápido usando nomes de usuário e senhas de texto puro.
• SSL: Autenticação com criptografia SSL através da rede.
• SASL: MD5/Kerberos mecanismos de Usos. SASL é uma autenticação simples e regime de
segurança com base em camadas

Você também pode gostar