O LDAP (Lightweight Directory
Access Protocol) é um protocolo para atualizar e pesquisar diretórios rodando
sobre TCP/IP. Ele foi criado como uma alternativa ao DAP (Directory Access
Protocol) para navegar em diretórios no formato X.500. O LDAP permite manipular
informações sobre pessoas, senhas, impressoras, recursos e serviços, unidades
organizacionais, entre outros, e define as formas como essas informações podem
ser consultadas, inseridas, removidas ou atualizadas. Uma versão segura desse
protocolo, o LDAPS, também está disponível.
O LDAP:
·
Centraliza, em um único local da rede,
informações acerca de usuários, senhas e diretórios.
·
Permite acesso aos dados de forma segura usando
SSL.
·
É independente de plataforma, podendo ser usado
tanto no Active Directory do Windows como no Open LDAP do Linux.
·
Armazena as informações de forma hierárquica em
uma estrutura de árvore.
·
Sofre mais consultas que atualizações.
·
Suporta tanto a autenticação por meio de
certificados quanto o uso de TLS.
Um cliente começa uma sessão de
LDAP ligando-se a um servidor LDAP normalmente pela porta padrão TCP 389. Este
envia requisições para o servidor, que devolve respostas das consultas e
alterações. As operações básicas são divididas em três categorias, conforme a
seguir:
Categoria
|
Operação
|
Descrição
|
Autenticação e controle
|
Bind
|
Autentica e especifica a versão do protocolo
LDAP.
|
Autenticação e controle
|
Abandon
|
Aborta uma requisição prévia.
|
Autenticação e controle
|
Unbind
|
Fecha a conexão, não o inverso de Bind.
|
Pesquisa e comparação
|
Search
|
Procura por e/ou recupera entradas dos
diretórios.
|
Pesquisa e comparação
|
Compare
|
Testa se uma entrada tem determinado valor como
atributo.
|
Atualização
|
Add
|
Adiciona uma nova entrada.
|
Atualização
|
Delete
|
Apaga uma entrada.
|
Atualização
|
Modify
|
Modifica uma entrada.
|
Atualização
|
Modify DN
|
Move ou renomeia uma entrada.
|
|
Start TLS
|
Protege a conexão com a Transport Layer Security
(TLS).
|
|
Extended Operation
|
Operação genérica para definir outras operações.
|
A estrutura básica das
informações LDAP é baseada em uma árvore conceitual, chamada de DIT (Directory
Information Tree). Cada folha dessa árvore é um objeto identificado por um DN
(Distinguished Name), que representa um endereço na estrutura LDAP sendo
considerada. Os identificadores DN possuem uma utilização parecida com os
sistemas de arquivo, com a diferença de que a parte mais significativa no LDAP
aparece primeiro (ex: cn=Henrique,o=funcionário,ou=administrativo), enquanto
nos endereços de arquivo acontece o contrário (ex: /home/user/arquivo). A
identificação de elementos do LDAP é semelhante à estrutura utilizada no DNS,
com a parte mais significativa aparecendo primeiro (mais à esquerda).
Para cada objeto (folha da
árvore) são definidos atributos. Alguns dos atributos que podem ser associados
aos objetos são:
Atributo
|
Descrição
|
c
|
country (País)
|
cn
|
common name
|
dc
|
domainComponent
|
dn
|
distinguished name (define uma entrada sem ambigüidades.
É o caminho de registros que fica entre o registro a ser especificado e a
raiz)
|
Givenname
|
Primeiro nome
|
ou
|
organizationalUnitName
|
rdn
|
relative distinguished name (identifica um
registro em seu nível)
|
sn
|
surname (sobrenome)
|
uid
|
user ID
|
Registro: contém informações sobre o objeto armazenado (usuário,
impressora, etc.).
Object class: define quais atributos são obrigatórios e quais são
opcionais em um registro. Um registro tem uma ou mais object class.
Schema: conjunto de regras que define os tipos de dados possíveis
(int, string, etc.) e organização desses dados. Busca manter a consistência dos
dados no diretório LDAP.
Modelos de abordagem do LDAP
Modelo de informações: define o tipo de informação que pode ser
armazenada em um diretório LDAP. Trata dos atributos, das object class, dos
schemas, etc.
Modelo
de nomes: define como a informação no diretório LDAP pode ser
organizada e referenciada. Trata da organização da DIT, como os RDNs e o DNs.
Modelo funcional: define o que pode ser feito com a informação no
diretório LDAP e como ela pode ser acessada e alterada. Descreve o que fazer
com o diretório e através de quais ferramentas, como por exemplo, fazer
autenticação, buscar no diretório, modificar dados, etc.
Modelo de segurança: define como a informação no diretório LDAP
pode ser protegida de acessos ou modificações não autorizadas. No LDAP, podemos
ter vários usuários além do administrador. Na verdade, caso você deseje, o LDAP
pode tratar cada registro da DIT como um usuário. Para dizer o que cada usuário
terá permissão de fazer (ler ou modificar) e em quais registros ele poderá fazer
isso (registros próprios dele ou dos outros), existem as ACLs (Access
Control Lists). O modelo de segurança utiliza o TLS (criptografa a
comunicação entre cliente e servidor) e a SASL – Simple Authentication and
Secutiry Layer (método de negociação seguro de autenticação entre cliente e
servidor para provar ao serviço que um cliente é válido).