# data[].attributes.body
LDAP, Lightweight Directory Access Protocol, é um protocolo de Internet que e-mails e outros programas usam para procurar informações de um servidor. Trata-se de um protocolo de aplicação aberto, livre de fornecedor e padrão de indústria para acessar e manter serviços de informação de diretório distribuído sobre uma rede de Protocolo da Internet (IP).

# data[].attributes.body
O protocolo LDAP, desenvolvido em 1993 pela Universidade de Michigan, nos Estados Unidos, tinha como objetivo suplantar o protocolo DAP (que serve para acessar o serviço do diretório X.500 do OSI). A partir de 1995, o LDAP tornou-se um diretório nativo para não servir apenas para acessar diretórios do tipo X500. O LDAP é, assim, uma versão mais leve do protocolo DAP, daí o seu nome Lightweight Directory Acess Protocol.

# data[].attributes.body
O LDAP apresenta as informações na forma de uma arborescência de informações hierárquica chamada DIT (Directory Information Tree), na qual as informações, ditas entradas são representadas por ramos. Um ramo situado na raiz de uma ramificação chama-se raiz ou sufixo (em inglês, root entry).

Toda entrada do diretório LDAP corresponde a um objeto abstrato ou real (ex: uma pessoa, objeto material, parâmetros, etc.) e cada uma delas é constituída por um conjunto de pares chaves/valores chamados atributos:

# data[].attributes.body
Toda entrada é constituída por um conjunto de atributos que permitem caracterizar o objeto que a entrada define. Existem dois tipos de atributos: os atributos normais , que são os atributos habituais (nome, sobrenome, etc.) caracterizando o objeto; e os atributos operacionais, aos quais só o servidor pode acessar e, assim, manipular os dados do diretório (datas de alteração, etc.).

Uma entrada é indexada por um nome distinto (DN - Distinguished Name) que permite identificar, de maneira única, um elemento da arborescência.

Um DN é constituído pelo nome do elemento, chamado RDN (Relative Distinguished Name), mais o conjunto dos nomes das entradas parentes. Trata-se de utilizar uma série de pares chave/valores para localizar uma entrada de maneira única.

Algumas das chaves utilizadas são uid, identificador único obrigatório; cn, sobrenome da pessoa; givenname, nome da pessoa, sn, o apelido da pessoa; o, empresa da pessoa; u, serviço da empresa na qual a pessoa trabalha; e mail, endereço de e-mail da pessoa.

Desta maneira, um DN terá a forma

uid=jeapil,cn=pillou,givenname=jean-francois

enquanto o RDN deste mesmo usuário hipotético será

uid=jeapil

Chama-se de esquema o conjunto das definições de objetos e de atributos que um servidor LDAP pode gerenciar. Isto permite, por exemplo, definir se um atributo poder ter um ou vários valores. Por outro lado, um atributo chamado objectclass permite definir os atributos obrigatórios ou facultativos.

# data[].attributes.body
O LDAP fornece um formato de troca (LDIF - Lightweight Data Interchange Format) que permite importar e exportar os dados de um diretório com um simples arquivo de texto. A maioria dos servidores LDAP suporta este formato, que permite uma grande interoperabilidade entre eles. A sintaxe do formato é a seguinte:

[<id>] dn: <distinguished name> <atributo> : <valor> <atributo> : <valor> ...

.

Neste arquivo, o ID é facultativo. Trata-se de um número inteiro positivo que permite identificar a entrada no banco de dados. Cada nova entrada deve ser separada da definição da entrada precedente com a ajuda de uma nova linha (linha vazia). É possível definir um atributo em várias linhas, começando as linhas seguintes por um espaço ou uma tabulação. Também é possível definir vários valores para um atributo, repetindo a cadeia nome: valor em linhas separadas. Quando o valor tem um caractere especial (não imprimível, um espaço ou dois pontos), o atributo deve ser seguido de :: e do valor codificado em base 64.

# data[].attributes.body
O protocolo LDAP define o método de acesso aos dados no servidor a nível do cliente e não a maneira como as informações são armazenadas. Ele está na versão 3 e foi padronizado pelo IETF (Internet Engineering Task Force). Assim, existe um RFC para cada versão de LDAP, constituindo um documento de referência: RFC 1777 para LDAP v.2 padrão e RFC 2251 para LDAP v.3 padrão.

Assim, o LDAP fornece ao usuário métodos que lhe permitem se conectar, desligar, procurar e comparar informações e inserir, alterar e excluir entradas. Por outro lado, o protocolo LDAP (na sua versão 3) propõe mecanismos de codificação (SSL, etc.) e autenticação (SASL) que permitem proteger o acesso às informações armazenadas no banco.

# data[].attributes.body
O LDAP fornece um conjunto de funções para efetuar consultas sobre os dados, para procurar, alterar e apagar entradas nos diretórios. Veja a lista das principais operações que o LDAP pode efetuar: