# OpenLDAP

O OpenLDAP é um software livre de código aberto que implementa o protocolo LDAP. Ele é um serviço de diretório baseado no padrão X.500.
O OpenLDAP é independente de sistema operativo. Várias distribuições Linux incluem o pacote do OpenLDAP. O software também corre nos sistemas operativos BSD, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (2000, XP, 2003, 2008, Vista, win7 e win 8) e z/OS.
O OpenLDAP foi desenvolvido inicialmente pela Universidade de Michigan com as seguintes características principais:
* suporte a IPv4 e IPv6;
* autenticação (Cyrus Sasl-Kerberos V, GSSAPI, Digest-MD5);
* segurança no transporte – SSL e TLS;
* controle de acessos;
* escolha entre banco de dados;
* capacidade de atender a múltiplos bancos de dados simultaneamente;
* alta performance em múltiplas chamadas;
* replicação de base.
O OpenLDAP é composto pelos seguintes elementos:
* SLAPD (Stand Alone LDAP Daemon) – Servidor;
* SLURPD (Stand Alone LDAP Update Replication Daemon);
* Bibliotecas diversas de implementação do protocolo LDAP;
* Ferramentas, utilitários diversos e clientes de exemplo.
Possui basicamente 2 arquivos de configuração, que são, respectivamente:
* slapd.conf - configuração do daemon;
* ldap.conf - configuração para acesso dos clientes à base.
O OpenLDAP possui os arquivos padrões chamados de schemas. Sungaila (2008) afirma que “um esquema é um conjunto de regras que define atributos, classes de objetos, e controles indicando onde cada dado pode ser armazenado”. Já Malère (2008) explica um schema como sendo uma estrutura de objetos que especifica a lista total de atributos permitidos e necessários para uma entrada de dados no serviço de diretório. Os schemas permitem manter a consistência dos dados. Uma importante característica desses arquivos é serem extensíveis e assim pode-se adicionar mais atributos ou classes em função das necessidades. Para usar um schema é necessário incluí-lo no arquivo de configuração slapd.conf. Os schemas definem:
* quais as classes de objetos (object classes) podem ser inseridas num diretório;
* quais os atributos de uma determinada classe de objetos;
* os valores possíveis para os atributos;
Se um objeto (entrada) não obedecer às regras do schema, ele não pode ser inserido no diretório. Portanto cada entrada estará condicionada a uma hierarquia de armazenamento dos dados na base LDAP. Isto é especificado através do Distinguished Name (DN).
O DN é usado para identificar uma entrada de forma não ambígua num serviço de diretório. Esse atributo é composto por uma seqüência de Relative Distinguished Name (RDN) e cada RDN corresponde a um ramo na árvore do diretório, desde a raiz até a entrada à qual o DN faz referência. Um DN é formado por uma série de RD´s separados por vírgulas. Por exemplo:
A inserção dos dados na base LDAP será feita por meio de arquivos ldif (LDAP Data Interchange Format), um arquivo de texto comum que pode ser criado ou alterado com editores de texto convencionais, obedecendo-se, apenas, o schema do diretório. As funções do arquivo ldif são:
* importar dados para o diretório;
* alterar objetos existentes;
* criar o backup do diretório;
* replicação do diretório.
A seguir, um exemplo de arquivo ldif:

## Veja também

* Site oficial do OpenLDAP