Implementação LDAP e Java

O LDAP é um serviço de diretórios no qual os diretórios são disponibilizados no servidor em uma estrutura hierárquica e podem ser acessados remotamente pelos clientes. Neste tutorial será utilizada a implementação open source OpenLDAP do servidor LDAP para disponibilizar consultas a entidades de uma instituição fictícia utilizando a linguagem Java.

[ Hits: 49.664 ]

Por: João Lucas Pereira de Santana em 23/11/2009


Configurando o OpenLDAP



A configuração do OpenLDAP é feita utilizando o arquivo slapd.conf, geralmente localizado no diretório /etc/openldap/. O código a seguir será utilizado como configuração do servidor para este tutorial. É importante conservar a ordem das declarações.

Arquivo /etc/openldap/slapd.conf:

# Definição dos Schemas
include     /etc/openldap/schema/core.schema
include     /etc/openldap/schema/cosine.schema
include     /etc/openldap/schema/inetorgperson.schema
include     /etc/openldap/schema/nis.schema

# Arquivos auxiliares do servidor
pidfile     /var/run/openldap/slapd.pid
argsfile    /var/run/openldap/slapd.args

#Carga de um modulo dinâmico para utilizar banco de dados hdb
modulepath    /usr/lib/openldap/openldap
moduleload    back_hdb.so

#Permitir bind anônimo somente quando credenciais não são vazias.
allow bind_anon_cred

#Configurando política de acesso.
access to attrs=userPassword
   by anonymous auth
   by self write
   by * none

access to attrs=gecos,description,loginShell
   by self write
   by * read

access to *
   by * read

# Banco de Dados
database        hdb
suffix           "dc=ufra,dc=br"
rootdn           "cn=Naza,dc=ufra,dc=br"
rootpw          {SSHA}HAy9nsqh3O9vl3RKmQHNJxHta3wlXiXy

# Diretório contendo o conteúdo do banco de dados
directory   /var/lib/openldap-data

Os schemas contém informações sobre o formato dos dados que serão armazenados no diretório.

include     /etc/openldap/schema/core.schema

core.schema define os atributos e objetos básicos do LDAP versão 3, descritos nas RFCs 2251-2256.

include     /etc/openldap/schema/cosine.schema

cosine.schema suporta as diretivas do diretório X.500, baseada na RFC 1274.

include     /etc/openldap/schema/inetorgperson.schema

inetorgperson.schema normalmente é utilizado para armazenar informações sobre pessoas, definido na RFC 2798.

include     /etc/openldap/schema/nis.schema

nis.schema define atributos e objetos necessários para usar LDAP em autenticação em rede de máquinas Linux, descrito na RFC 2307.

pidfile     /var/run/openldap/slapd.pid
argsfile    /var/run/openldap/slapd.args

O pidfile guarda a localização do arquivo com o pid do processo servidor, o argsfile a localização do arquivo com argumentos do servidor.

modulepath    /usr/lib/openldap/openldap
moduleload    back_hdb.so

O modulepath guarda o caminho para os módulos dinâmicos que serão utilizados, neste tutorial usaremos apenas o módulo para o banco de dados hdb.

allow bind_anon_cred

A diretiva allow com o argumento bind_anon_cred é usada para permitir bind anônimo somente quando credenciais não são vazias.

A política de acesso às informações armazenadas é definida com ACLs (Access Control List). As ACLs são processadas na ordem em que são declaradas. Mais informações sobre ACLs podem ser encontradas no manual slapd.access.

No nosso exemplo, o acesso anônimo ao atributo userPassword é permitido apenas com a finalidade de autenticação. Modificações no atributo userPassword são permitidas somente ao dono. Aos demais usuários, nenhuma permissão é garantida referente a esse atributo:

access to attrs=userPassword
   by anonymous auth
   by self write
   by * none


É permitido apenas ao dono alterar os atributos gecos, description e loginShell. Aos demais usuários esses atributos podem apenas ser lidos:

access to attrs=gecos,description,loginShell
   by self write
   by * read


A todos os outros atributos o acesso é apenas para leitura par qualquer usuário:

access to *
   by * read

Como dito anteriormente, o banco de dados utilizado é hdb, definido pelo parâmetro database.

O parâmetro suffix indica a base da árvore de diretórios. No nosso caso, dc=ufra,dc=br.

rootdn é o nome do administrador do serviço de diretórios. Neste caso, é o Naza (cn=Naza,dc=ufra,dc=br).

rootpwd é a senha do administrador. A senha utilizada é "queroEntrar", e está em forma de Hash.

directory é o lugar onde ficam armazenados os dados do diretório. Este diretório deve existir previamente e com permissões 0700 com ldap: ldap como dono e grupo.

# ls -l /var/lib/
drwx------  2 ldap     ldap     4096 Nov 14 15:19 openldap-data

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando o OpenLDAP
   3. Inicializando o OpenLDAP
   4. Realizando consultas/inserções
   5. Comunicação Java e LDAP
Outros artigos deste autor

Uma introdução ao Linux-PAM

Leitura recomendada

Instalação da Plataforma Hadoop

Instalando o poderoso banco de dados IBM DB2!

Injeção de SQL

Entendendo o LDAP

MongoDB Aggregation

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts