LDAP E OpenLDAP
Artigos Científicos: LDAP E OpenLDAP. Pesquise 862.000+ trabalhos acadêmicosPor: PauloVinicius • 30/11/2014 • 2.193 Palavras (9 Páginas) • 352 Visualizações
INTRODUÇÃO
Um diretório, em uma definição simples, é um banco de dados desenvolvido para atender principalmente a grandes quantidades de consultas e não a grandes volumes de atualizações (inserções ou remoções).
A forma em que os diretórios armazenam suas informações é hierárquica e não relacional, ou seja, em sistemas de diretórios não temos tabelas de dados como temos em bancos relacionais (como MySQL, Oracle, SQL Server, entre outros). No lugar de tabelas, os dados são organizados em uma DIT (Directory Information Tree – Árvore de informação do diretório), que é uma árvore onde cada vértice é um registro, onde um registro é um conjunto de informações sobre determinado objeto que queremos guardar.
DEFINIÇÃO DE DIT E PROTOCOLO LDAP
Uma árvore é formada por vértices (no caso da DIT, cada vértice é um registro) e por arestas, que são "linhas" que relacionam dois vértices. Observe a seguinte DIT:
Nesse exemplo, cada elipse é um vértice da árvore, ou seja, cada elipse representa um registro da árvore, que é onde as informações de certo objeto são guardadas. No exemplo, temos o registro "POP-CE", que pode guardar várias informações, como onde localiza-se o Pop-ce, quais membros, quais projetos em andamento, etc.
Cada linha que relaciona dois registros é chamada de aresta. Dessa forma, temos uma aresta entre os registros "RNP" e "POP-CE", outra entre "POP-CE" e "VOIP", etc. Nesse caso, essas arestas são usadas para percebermos o caráter hierárquico dessa árvore. Veja que "POP-CE", "POP-RJ", "POP-PE" estão todos abaixo de "RNP", assim como "VOIP" e "GERENCIA" estão abaixo de "POP-CE".
Analogicamente, a DIT pode ser visualizada como se fosse um sistema de pastas, no qual a pasta principal é a pasta "RNP" e dentro dela estão as pastas "POP-CE", "POP-RJ" e "POP-PE", dentro da pasta POP-CE estão as pastas "VOIP" e "GERENCIA", etc.
Assim, já podemos ter uma idéia do que é uma árvore. A DIT é uma árvore enraizada, pois sempre há um único registro na parte mais alta da árvore, registro esse chamado de raiz (no exemplo, a raiz é o registro "RNP").
Lightweight Directory Access Protocol, ou LDAP, é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP. Um diretório LDAP geralmente segue o modelo X.500, que é uma árvore de nós, cada um consistindo de um conjunto de atributos com seus respectivos valores. O LDAP foi criado como uma alternativa ao muito mais incômodo Directory Access Protocol (DAP).
Um diretório LDAP tende a refletir vários limites políticos, geográficos e/ou organizacionais, dependendo do modelo adotado. A utilização do LDAP hoje em dia tende a se basear nos nomes já existentes do sistema Domain Name System (DNS), na estruturação dos níveis mais básicos de hierarquia. Mais profundamente, podem aparecer estruturas representando pessoas, unidades organizacionais, impressoras, documentos, grupos de pessoas ou qualquer outra coisa que represente um nó.
O nome do sistema de diretórios ser LDAP se deve ao fato do protocolo usado para acessar o sistema se chamar LDAP. O sistema LDAP é derivado de um sistema de diretórios chamado X.500. O X.500 usava como protocolo para acessar sua DIT o protocolo DAP (Directory Access Protocol). Mas quais as diferenças entre o X.500 e o LDAP? O LDAP, como o próprio nome diz, é mais leve, retirou alguns problemas que haviam no X.500 (como redundância de dados), mas as principais diferenças estão entre os protocolos de acesso LDAP e DAP.
O protocolo DAP era implementado sobre o padrão OSI de sete camadas, o que o deixava um tanto quanto incompatível e pesado. Já o LDAP é implementado sobre o sistema TCP/IP que é mundialmente difundido, permitindo uma boa portabilidade entre os sistemas que desejam utilizar LDAP, além de possuir um menor overhead que o DAP nos pacotes enviados.
A versão atual é LDAPv3, especificado em uma série de RFC como mostra o RFC 4510.
Os autores deste protocolo foram Tim Howes da Universidade de Michigan, Steve Kille da ISODE (ISO Development Environment) e Wengyik Yeong da Performance Systems International.
REGISTROS LDAP
Cada registro, como já foi dito, é um conjunto de informações sobre certo objeto. Cada informação é guardada em um atributo no registro.
Mas, nesse ponto, surge a pergunta: quais atributos podem ser colocadas em um registro? Depende de quais OBJECT CLASSES (Classes de objetos) constituem o registro. Uma object class apenas informa quais atributos são obrigatórios e quais são opcionais para certo registro. Cada registro pode ser constituído por uma ou mais object classes.
Usando o exemplo da figura 1, suponha que, na definição do registro "GERENCIA", dizemos que esse registro faz parte de duas object classes: da top e da inetOrgPerson. A object class top exige que o registro faça parte de pelo menos uma outra object class, que nesse caso é a inetOrgPerson. Já a inetOrgperson, exige que o registro tenha os atributos "cn" e "sn" (que significam commonname – nome comum e surname – sobrenome) e tenha os seguintes atributos como opcionais: mail, manager, mobile, o, pager, photo, roomNumber, secretary, uid, userCertificate, entre outros.
Você deve estar se perguntando como saber quais atributos são obrigatórios em uma object class, quais object classes são permitidos usar, entre outras coisas. Na verdade, a descrição de quais object classes podem ser usadas encontram-se em arquivos chamados schema (esquema). Nos schemas, tem-se a visão de quais atributos são obrigatórios e quais são opcionais em certa object class, qual a sintaxe que cada atributo te que obedecer (se é uma string, se é um inteiro, etc).
Cada registro na DIT deve possuir um identificador único, para não haver ambiguidades na hora das buscas. Esse identificador único é chamado de DN (Distinguished Name – nome distinto), que é o caminho de registros que fica entre o registro a ser especificado e a raiz. Mas como indicar quais os registros que ficam nesse caminho? Isto é feito através de vários RDN (Relative Distinguished Name),
...