Você está na página 1de 79

LDAP

Laboratrio de Computao Cientfica


UFMG

Sumrio
Diretrios
Introduo ao LDAP
Modelos do LDAP
Formato LDIF
Distribuio
Replicao

Diretrios

Diretrios
Viso Geral
O que um diretrio faz?
O que um diretrio permite fazer?
Bancos de Dados x Diretrios
Por que usar diretrios?
Tipos de Diretrios

Viso Geral
Base de dados especializada para
consulta
Servio de diretrio - coleo de
software, hardware, processos,
polticas, e procedimentos
administrativos para disponibilizar a
informao do diretrio aos seus
usurios

O que um diretrio faz?


Unifica a gerncia das informaes
- Informaes de pessoas, servios, etc
- Recursos computacionais
- Informaes sobre equipamentos e redes

Complementa outros servios


- Base de dados para autenticao e autorizao
- Organiza e facilita o acesso s informaes

O que um diretrio
permite fazer?
Organizar as informaes
hierarquicamente
Compartilhar dados entre aplicaes
Controlar o acesso aos dados
Distribuir a gerncia dos dados
Estender as informaes com
facilidade

Bancos de Dados x
Diretrios
Bancos de Dados so usados para
armazenar dado que so alterados
constantemente.
Exemplos
Registro de transaes bancrias,
controle de estoque de um
supermercado, armazenar os dados
contbeis de uma empresa, etc.

Bancos de Dados x
Diretrios
Diretrios so usados para armazenar
dados que so alterados com pouca
freqncia, mas que so consultados
constantemente.
Exemplos
Cadastro de alunos de uma universidade,
informaes sobre computadores e redes,
listas de contatos, etc.

Por que usar diretrios?


Permitem que as informaes na
rede fiquem organizadas de forma
mais eficiente
Exemplos
o uso de de apelidos, o oferecimento de
servio de pginas amarelas,
diminuem a dificuldade de encontrar e
usar as informaes da rede

Tipos de Diretrios
Projetados para uma aplicao especfica
- IBM/Lotus Notes, Microsoft Exchange

Projetados para sistemas operacionais de rede


- eDirectory da Novell e NIS da Sun

Projetados para um propsito especfico


- DNS

Projetados para um propsito geral e baseado


em padres
- Diretrios baseados no LDAP

O que foi visto


9O que so diretrios
9Diferena entre diretrios e bancos
de dados
9Quando usar diretrios
9Exemplos de diretrios

Introduo ao LDAP

Introduo ao LDAP
O que o LDAP?
Histrico - X.500
Histrico - LDAP
Exemplos de Servidores LDAP

O que o LDAP?
Lightweight Directory Access Protocol
um protocolo que define o mtodo
no qual um diretrio acessado
Especificado em 1993 (RFC-1487)

Histrico - X.500
Conjunto completo de padres
propostos pela ITU que definem os
aspectos globais do servio de
diretrios
Define o DAP (Directory Access
Protocol), que consiste em um
conjunto de regras para se acessar
um diretrio X.500

Histrico - X.500
DAP

Cliente
X.500

Servidor
X.500

Cliente X.500 usando DAP para


comunicar - se com um servidor X.500

Histrico - LDAP
Desenvolvido inicialmente com
um front-end do X.500, assim
como o DAP
Diferenas para o DAP:
LDAP usa TCP/IP, enquanto o DAP
baseado nos protocolos de rede OSI
Excludas as funcionalidades obscuras,
redundantes e raramente usadas

Histrico - LDAP
LDAP

Cliente
X.500

DAP

Tradutor de
protocolo LDAP

Servidor
X.500

LDAP como front-end do X.500

Histrico - LDAP
LDAP

Cliente
LDAP

Servidor
LDAP

LDAP com seu prprio servidor

Servidores LDAP

OpenLDAP slapd server


Netscape Directory Server
Novell eDirectory
Sun ONE Directory Server
IBM Directory Server
Oracle Internet Directory
Microsoft Active Directory

O que foi visto


9Breve histrico do LDAP
9O que o LDAP
9Exemplos de servidores LDAP

Modelos do LDAP

Modelos do LDAP
Modelo de Nomes
DIT
DN e RDN

Modelo de Informao

Objetos
Classes de objetos
Atributos
Schemas

Modelo Funcional
Leitura e Pesquisa
Alterao
Autenticao

Modelo de Segurana

Modelos do LDAP
O LDAP especifica os seguintes
modelos
Modelo de Nomes
Modelo de Informao
Modelo Funcional
Modelo de Segurana

Modelo de Nomes
Como a informao pode ser organizada e
referenciada
Objetivos
Organizar e referenciar as informaes no
diretrio
Facilitar a manuteno dos dados
Flexibilizar a poltica de controle de acesso
Permitir a partio e a replicao
Permitir uma navegao mais simples

Modelo de Nomes
Entradas so dispostas
hierarquicamente
Hierarquia representada por uma
Directory Information Tree - DIT
Cada entrada identificada
unicamente por um distinguished
name - DN

Directory Information Tree


root
dc=empresa
ou=programadores
cn=Paulo Lara

ou=coordenadores
cn=Maria Helena

DN e RDN
DN (Distinguished Name) identifica unicamente
uma entrada no DIT
Contm a informao do nvel em que a entrada
est na rvore
Exemplo
cn=Paulo Lara,ou=programadores, dc=empresa

RDN (Relative Distinguished Name) um nome


que nico naquele nvel de hierarquia
Exemplo
cn=Paulo Lara

Modelo de Informao
Tipo de dados e unidades bsicas de
informao que podem ser
armazenados
Baseia-se em entradas, que so
compostas por atributos
Entrada- coleo de informaes
sobre um objeto

Entradas (ou objetos)


Cada entrada possui um nome nico (DN)
Implementam uma ou mais classes de
objetos
Em geral, toda entrada implementa uma
classe abstrata, pelo menos uma classe
estrutural e zero ou mais classes
auxiliares
Possuem apenas atributos definidos nas
classes de objetos implementadas

Entradas (ou objetos)


dn: cn=Edre Moreira,ou=LCC,ou=ATI,ou=REITORIA,o=UFMG,ou=people,DC=UFMG,DC=BR
homePhone: +55 031 34435622
givenName: Teste
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
postalCode: 31255800
userPassword:: e2NyaXB0fVJuVlZ2V2w2WWpXcTI=
uid: edre
cn: Edre Moreira
street: Belo Horizonte
st: MG
l: Belo Horizonte
sn: Moreira

Classes de Objetos
Definem os atributos opcionais e
obrigatrios das entradas
Podem ser abstratas, estruturais ou
auxiliares
Possuem um nome nico
So definidas em um Schema
Podem estar presentes em mais de uma
entrada
Podem herdar propriedades de outras
classes de objetos

Classes de Objetos
Sintaxe
objectclass ( <OID da classe de objeto>
[ "NAME" <nome da classe de objetos> ]
[ "DESC" <descrio da classe de objeto> ]
[ "OBSOLETE" ]
[ "SUP" <OID da classe de objeto ancestral> ]
[ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) ]
[ "MUST" <OID dos atributos obrigatrios> ]
[ "MAY" <OID dos atributos no obrigatrios> ]
)

Classes de Objetos
Exemplo
objectclass ( 1.3.6.1.4.1.15996.1.2.1
NAME objPessoa
SUP top STRUCTURAL
DESC Dados de pessoas
MUST ( pessoaID $ nome $
sobrenome $ cpf)
MAY ( endereco $ telefone $
nascimento $ naturalidade )
)

Atributos
Possuem nomes, s vezes abreviaes ou
apelidos
Definem o tipo de dados que podem
conter
Podem possuir um ou mais valores
Podem estar presentes em uma ou mais
classes de objetos
Alguns atributos funcionam como RDN,
por exemplo cn, ou, dc, o

Atributos
Sintaxe
attributetype ( <OID do atributo>
[ "NAME" <nome do atrituto> ]
[ "DESC" <descrio do atributo> ]
[ "OBSOLETE" ]
[ "SUP" <OID do atributo ancestral> ]
[ "EQUALITY" <regra de comparao>
[ "ORDERING" <regra de comparao>
[ "SUBSTR" <regra de comparao> ]
[ "SYNTAX" <OID da SYNTAX> ]
[ "SINGLE-VALUE" ]
[ "COLLECTIVE" ]
[ "NO-USER-MODIFICATION" whsp ]
[ "USAGE" whsp AttributeUsage ] ")"

Regras de Comparao
Define os mtodos de comparao
de atributos
So definidas nas propriedades
IGUALITY, SUBSTR e ORDERING
Utilizadas para indexao

Atributos

Exemplo

attributetype ( 1.3.6.1.4.1.15996.1.1.1
NAME nome
DESC Nome da pessoa
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )

OID (Object Identifer)


Exigidos para identificar unicamente um atributo
ou classe de objeto
So hierrquicos
1.3.6.1.4.1.15996
1.3.6.1.4.1.15996.1
1.3.6.1.4.1.15996.1.1
1.3.6.1.4.1.15996.1.2

RNP/GT-Dir work
video related work
attributes
objectclass

Qualquer empresa pode solicitar um OID para os


seus prprios objetos e atributos
Obtidos junto IANA Internet Assigned
Numbers Authority
No deve-se usar um OID existente para um
novo atributo ou classe de objeto

Schemas
Arquivos com definies das classes
de objetos, atributos usados e regras
de comparao
Servidor LDAP deve conhecer os
Schemas usados pelas entradas

Modelo Funcional
Determina o que pode ser feito com a
informao, como pode ser acessada
e alterada
Categorias
Pesquisa
Alterao
Autenticao

Pesquisa
Leitura (read) - retorna os atributos
de um DN
Listagem (list) - retorna os DNs dos
descendentes do DN informado
Pesquisa (search) - seleciona
entradas de acordo com um filtro de
consulta

Filtros de Consulta
Operadores:
&e
| ou
! no
~= aproximadamente igual
>= maior ou igual
<= menor ou igual
* qualquer

Filtros de Consulta
Exemplos
(cn=Paulo C*)
Retorna entradas que possuem o
atributo cn com valor iniciado com
Paulo C
(&(uid=paulo)(sn=lara))
Retorna entradas com o atributo uid
com valor igual a paulo e o atributo sn
com valor igual a lara

Filtros de Consulta
(|(ou=mg)(ou=sp))
Seleciona entradas que possuem o
atributo ou com valor igual a mg ou
sp
(&(objectclass=inetOrgPerson)(cn=A*))
Retorna entradas que possuem o
objectclass inetOrgPerson e o atributo
cn com valor iniciado com A*

Pesquisa
Comparao (compare) - recebe um
DN, um nome de atributo e uma
suposio de valor
Indica se o valor corresponde ao
valor contido no atributo ou no
Usado para validao de senhas,
dentre outras aplicaes

Alterao
Alterao (modify) - modifica entradas
existentes. Permite adicionar, excluir e
alterar o valor de atributos
Adicionar (add) - insere entradas no
diretrio
Apagar (delete) - remove entradas do
diretrio
Alterao RDN (modify RDN) - muda o
nome das entradas

Autenticao
bind - promove a autenticao do
usurio e inicia uma sesso
unbind - encerra a sesso

Modelo de Segurana
Como a informao pode ser
protegida de acessos no
autorizados
Autenticao
Controle de Acesso e Autorizao
Integridade de Dados
Privacidade de dados

O que foi visto


9Operaes do LDAP
9Organizao dos dados
9Filtros de busca
9Definio de classes e atributos

Formato LDIF

Formato LDIF
Forma de representao criada para
promover o intercambio de
informaes para o LDAP
Dois tipos:
Descrio de conjunto de entradas
Descrio de sentenas de atualizao

Formato LDIF
Exemplo: descrio de conjunto de entradas:
# empresa,com
dn: dc=empresa,dc=com
dc: example
objectClass: dcObject
objectClass: organization
o: Empresa LTDA.
# programadores,empresa,com
dn: ou=programadores,dc=empresa,dc=com
ou: programadores
description: Programadores da empresa
objectclass: organizationalunit

Formato LDIF
Exemplo: descrio de sentena de atualizao:
# apagando mltiplos atributos
dn: cn=Paulo
Lara,ou=programadores,dc=empresa,dc=com
changetype: modify
# apaga todos os nmeros de telefone
delete: telephonenumber
# acrescentando novos atributos para uma nova
entrada
dn: cn=Maria Helena,ou=analistas,dc=empresa,dc=com
changetype: add
objectclass: inetorgperson
cn: Maria Helena
cn: Maria Helena Silva
telephonenumber: 88487755

O que foi visto


9Formato do arquivo LDIF para
descrever entradas
9Formato do arquivo LDIF para
descrever atualizaes

URLs do LDAP

URLs do LDAP
Utilizadas para
Identificao: registros ou consultas a
atributos de um servio
Localizao: pode incluir a localizao
do servio sendo registrado, como
endereo IP ou nome do servidor

URLs do LDAP
Forma geral
<ldapurl> ::= "ldap://" [ <hostport> ] "/" <dn>
[ "?" <attributes>
[ "?" <scope> "?" <filter> ] ]
<hostport> ::= <hostname> [ ":" <portnumber> ]
<attributes> ::= NULL | <attributelist>
<attributelist> ::= <attributetype> |
<attributetype> [ "," <attributelist> ]
<scope> ::= "base" | "one" | "sub"

URLs do LDAP
dn - Distinguished Name
attribute list - Lista de atributos
retornados
scope
base: Pesquisa na base do diretrio
one: Pesquisa no nvel de diretrio
expecificado
sub: Pesquisa nas sub-rvores do diretrio

filter - Um string contendo um filtro de


consulta

URLs do LDAP
Exemplos
ldap://grude.com/dc=ufmg,dc=br?cn?sub?sn=
silva
Retorna o atributo cn de todas as entradas da
sub-rvore cujo atributo sn silva
ldap://ldap.ufrj.com/ou=people,dc=br,
dc=com??one?(&(cn=M*)(mail=*))
Retorna todos os atributos das entradas
imediatamente descendentes da entrada
people cujo atributo cn inicia-se com M e que
possua o atributo mail

O que foi visto


9Como construir URLs para LDAP

Distribuio

Distribuio
Referrals
Chaining

Distribuio
LDAP permite distribuio da
informao entre vrios servidores
Objetivos
Melhorar o desempenho
Aumentar a disponibilidade
Permitir um bom gerenciamento

Esquema Bsico

partio 1

partio 2

Representa uma entrada do diretrio

Exemplo
dc=br

dc=ufmg

ou=alunos

cn=paulo

dc=ufpr

ou=professores

cn=carlos

Servidor UFMG

ou=alunos

cn=luiz

Servidor UFPR

Unio de paties
Referrals
O servidor requisitado indica em qual servidor
procurar as informaes requisitadas
Bibliotecas do cliente podem implementar o
acesso aos diferentes servidores
automaticamente

Chaining
Servidor entra em contato com outros
servidores antes de retornar a resposta para o
cliente

Referrals
Cliente
4

3
2

dc=br

dc=ufmg
ou=alunos

cn=paulo

dc=ufpr
ref:ldap://serivdor/
dc=br,dc=ufpr

ou=professores

cn=carlos

Servidor UFMG

dc=ufpr
ou=alunos

cn=luiz

Servidor UFPR

Referrals
Referncia feita pelo atributo ref no
servidor UFMG e pela configurao do
servidor UFRJ
O atributo ref contm a URL do servidor
que possui a sub-rvore do diretrio que
se deseja referenciar
O atributo ref definido na classe de
objeto referral

Chaining
Cliente
1
4
dc=br

dc=ufmg
ou=alunos

cn=paulo

ou=professores

cn=carlos

Servidor UFMG

dc=ufpr

ou=alunos

cn=luiz

Servidor UFPR

O que foi visto


9Como LDAP suporta distribuio
9Mecanismo de referral
9Mecanismo de chaining

Replicao

Replicao
Cpia do contedo do diretrio (total ou
parcial)
No existe um modelo padro
Melhora o desempenho e a confiabilidade
Aproxima o dado dos usurios
Distribui melhor a carga dos servidores
Garante redundncia do servio

Replicao
dc=br

dc=br

dc=ufrj

dc=ufpr
dc=ufmg

dc=ufmg

Replicao

Mestre

Replica

O que foi visto


9Suporte replicao pelo LDAP

Recaptulao
9 Histrico do LDAP
9 Utilidade de diretrios
9 Organizao da informao no LDAP
9 Operaes em LDAPs
9 Definio de classes de objetos e atributos
9 Formato LDIF
9 Distribuio
9 Replicao

Referncias
LDAP
RFC1558: A String Representation of LDAP Search Filters
RFC2251: Lightweight Directory Access Protocol (v3)
RFC2252:
Lightweight Directory Access Protocol (v3): Attribute Syntax
RFC
Definitions
RFC2254: The String Representation of LDAP Search Filters
RFC2255: The LDAP URL Format
RFC3296: Named Subordinate References in Lightweight Directory
Access Protocol (LDAP) Directories
http://www.zytrax.com/books/ldap/ch2/index.html
http://www.developer.com/java/data/article.php/10932_2197131_3
http://www.lc.leidenuniv.nl/awcourse/oracle/network.920/a96577/
concepts.htm#726741
http://www.wdvl.com/Authoring/Languages/PHP/Pro/prophp1_5.ht
ml
http://msdn.microsoft.com/library/default.asp?url=/library/enus/adsi/adsi/search_filter_syntax.asp

Referncias
X.500 e Diretrios

http://www.isi.salford.ac.uk/staff/dwc/Version.Web/Contents.htm
http://planeta.terra.com.br/informatica/silvello/openldap/capitulo1.html
http://penta2.ufrgs.br/aplicosi/x500/x5001.html
http://www.pr.gov.br/batebyte/edicoes/1995/bb45/x500.htm

Você também pode gostar