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: 55.471 ]

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


Inicializando o OpenLDAP



Para evitar a necessidade de informar o endereço do servidor e a base onde serão realizadas as consultas, o OpenLDAP fornece um arquivo de configuração global para os programas que utilizam seu servidor. O arquivo é o /etc/openldap/ldap.conf. Neste tutorial utilizamos o ldap.conf, como mostra o exemplo abaixo.

Arquivo /etc/openldap/ldap.conf:

BASE   dc=ufra,dc=br
URI   ldap://ldaps://ldap.ufra.br

Para permitir consultas ldap:// e ldapi:// configuramos o arquivo /etc/conf.d/slapd habilitando a primeira opção. O arquivo ficou da seguinte forma:

# conf.d file for openldap
#
# To enable both the standard unciphered server and the ssl encrypted
# one uncomment this line or set any other server starting options
# you may desire.
#

OPTS="-h 'ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
# Uncomment the below to use the new slapd configuration for openldap 2.3
#OPTS="-F /etc/openldap/slapd.d -h 'ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"

Caso tenha criado novos arquivos em um diretório diferente do especificado, basta copiar os arquivos ldap.conf e slapd.conf para seus devidos locais. Lembrando que os arquivos /etc/openldap/ldap.conf e /etc/conf.d/slapd citados anteriormente podem ser modificações dos originais.

Copiando o ldap.conf para o diretório /etc/openldap/:

# cp ldap.conf /etc/openldap/ldap.conf

Copiando o slapd.conf para o diretório /etc/openldap/:

# cp slapd.conf /etc/openldap/slapd.conf

É importante que o usuário ldap tenha permissões de leitura e escrita nesse diretório e nesses arquivos.

Para executar a operação de inserção de forma mais rápida e sem necessidade de autenticação, tráfego de rede e outros detalhes, vamos inserir os dados iniciais com o servidor desligado. Para isso é necessário limpar a base de dados deixando apenas o arquivo de configuração do diretório, DB_CONFIG. Lembrando que nossa base dados está no diretório /var/lib/openldap-data, como informado no slapd.conf.

Salvando o DB_CONFIG:

# cp /var/lib/openldap-data/DB_CONFIG /var/lib/

Limpando o diretório do banco de dados:

# rm -Rf /var/lib/openldap-data/*

Copiando o DB_CONFIG para o diretório correto:

# cp /var/lib/DB_CONFIG /var/lib/openldap-data/

Antes de carregar o arquivo de configuração do nosso diretório (base.ldif) é necessário iniciar o servidor com o diretório openldap-data/ contendo apenas o DB_CONFIG e depois desligá-lo.

Inicializando o servidor slapd:

# /etc/init.d/slapd start

Parando o servidor slapd:

# /etc/init.d/slapd stop

NOTA: Sempre que quiser recarregar os dados com o servidor desligado é necessário limpar o diretório /var/lib/openldap-data (como descrito anteriormente) e iniciar e parar o servidor.

Agora podemos carregar nosso diretório com o servidor desligado.

# slapadd -v -l base.ldif

Nota: Tome cuidado com os caracteres inseridos pelos editores de texto.

O resultado da inserção é mostrado abaixo:

added: "dc=ufra,dc=br" (00000001)
added: "dc=professor,dc=ufra,dc=br" (00000002)
added: "dc=aluno,dc=ufra,dc=br" (00000003)
added: "dc=tecnico,dc=ufra,dc=br" (00000004)
added: "ou=agroboy,dc=aluno,dc=ufra,dc=br" (00000005)
added: "ou=bichogrilo,dc=aluno,dc=ufra,dc=br" (00000006)
added: "ou=computeiro,dc=aluno,dc=ufra,dc=br" (00000007)
added: "uid=rudini,ou=computeiro,dc=aluno,dc=ufra,dc=br" (00000008)

Para verificar o conteúdo do nosso diretório podemos usar o comando slapcat. Temos a seguinte saída:

# slapcat

dn: dc=ufra,dc=br
dc: ufra
objectClass: top
objectClass: domain
structuralObjectClass: domain
entryUUID: f626572a-6591-102e-90a6-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000000#00#000000

dn: dc=professor,dc=ufra,dc=br
dc: professor
objectClass: domain
structuralObjectClass: domain
entryUUID: f6268e16-6591-102e-90a7-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000001#00#000000

dn: dc=aluno,dc=ufra,dc=br
dc: aluno
objectClass: domain
structuralObjectClass: domain
entryUUID: f626b422-6591-102e-90a8-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000002#00#000000

dn: dc=tecnico,dc=ufra,dc=br
dc: tecnico
objectClass: domain
structuralObjectClass: domain
entryUUID: f627c1dc-6591-102e-90a9-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000003#00#000000

dn: ou=agroboy,dc=aluno,dc=ufra,dc=br
ou: agroboy
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: f627e0c2-6591-102e-90aa-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000004#00#000000

dn: ou=bichogrilo,dc=aluno,dc=ufra,dc=br
ou: bichogrilo
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: f6280250-6591-102e-90ab-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000005#00#000000

dn: ou=computeiro,dc=aluno,dc=ufra,dc=br
ou: computeiro
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: f6284274-6591-102e-90ac-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000006#00#000000

dn: uid=rudini,ou=computeiro,dc=aluno,dc=ufra,dc=br
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: Rudini
sn: PitBull
uid: rudini
uidNumber: 1010
gidNumber: 100
homeDirectory: /home/rudini
loginShell: /bin/bash
gecos: Rudini AuAu PitBull
userPassword:: e1NTSEF9ZHlhT3VVTm5WUTA0dVJ3cTVrNTVLY3dHZ3VtT0VaaHA=
structuralObjectClass: inetOrgPerson
entryUUID: f628b98e-6591-102e-90ad-fb857a1d72be
creatorsName: cn=Naza,dc=ufra,dc=br
modifiersName: cn=Naza,dc=ufra,dc=br
createTimestamp: 20091114175037Z
modifyTimestamp: 20091114175037Z
entryCSN: 20091114175037Z#000007#00#000000

Página anterior     Próxima página

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

Entendendo o LDAP

Instalação da Plataforma Hadoop

MongoDB Aggregation

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

Como criar VIEWS no MySQL

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts