O
LDAP é um serviço de diretórios baseado no modelo cliente-servidor no qual os diretórios são disponibilizados no servidor em uma estrutura hierárquica e podem ser acessados remotamente pelos clientes.
O LDAP (Lightweight Directory Access Protocol) surgiu como uma alternativa ao protocolo DAP (Directory Access Protocol) para ser implantado numa arquitetura de rede que implementa a pilha de protocolos do TCP/IP visando, principalmente, economia de recursos computacionais.
O
slapd, servidor do LDAP, pode fornecer seu próprio serviço de diretórios ou conectar-se a um serviço global para responder às requisições dos clientes. Neste tutorial será utilizada a implementação open source
OpenLDAP do servidor de diretórios LDAP para disponibilizar consultas a alunos de uma universidade fictícia (a Universidade Federarrr Rurarrr dos Agrônom - UFRA) utilizando a linguagem Java.
Criando uma estrutura de diretórios.
A estrutura de uma base LDAP pode ser vista na Figura 1.
O arquivo de configuração
base.ldif da estrutura anterior é mostrado abaixo:
dn: dc=ufra,dc=br
dc: ufra
objectClass: top
objectClass: domain
dn: dc=professor,dc=ufra,dc=br
dc: professor
objectClass: domain
dn: dc=aluno,dc=ufra,dc=br
dc: aluno
objectClass: domain
dn: dc=tecnico,dc=ufra,dc=br
dc: tecnico
objectClass: domain
dn: ou=agroboy,dc=aluno,dc=ufra,dc=br
ou: agroboy
objectClass: organizationalUnit
dn: ou=bichogrilo,dc=aluno,dc=ufra,dc=br
ou: bichogrilo
objectClass: organizationalUnit
dn: ou=computeiro,dc=aluno,dc=ufra,dc=br
ou: computeiro
objectClass: organizationalUnit
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: {SSHA}dyaOuUNnVQ04uRwq5k55KcwGgumOEZhp
O arquivo LDIF (LDAP Data Interchange Format) anterior é do tipo texto e contém dados no formato LDAP para serem inseridos no banco de dados. É comum usar este arquivo como cópia de segurança dos dados.
O atributo dn significa Distinguished Name e seu conteúdo deve ser único em todo o banco de dados. Um dn identifica um, e somente um, objeto em toda a árvore de dados e é composto pelo atributo mais o caminho para ser chegar até a raiz da árvore.
O atributo dc significa Domain Component e é utilizado para determinar o caminho até a raiz da árvore:
dn: ou=computeiro,dc=aluno,dc=ufra,dc=br
Os atributos objectClass são classes de objetos e atributos para representar um usuário do sistema
Linux. Estas classes estão definidas nos schemas que posteriormente serão inseridos nos arquivos de configuração do servidor.
objectClass: organizationalUnit
Uid é o nome de login do usuário, cn significa Common Name ou Nome Comum e representa o primeiro nome do usuário, sn (Surname) é o sobrenome do usuário. UidNumber é o número de identificação do usuário, gidNumber é o número de identificação do grupo primário do usuário, homeDirectory é a localização do diretório home do usuário, loginShell será o shell utilizado pelo usuário, gecos normalmente é o nome completo do usuário e userPassword é o hash da senha do usuário.
Para gerar um hash basta usar o comando
slappasswd. Neste exemplo a senha usada foi a palavra "auau".
# slappasswd
New password:
Re-enter new password:
{SSHA}Zaoa6XdxaiC8r5s+LLiLxkdUHxyZxpkq