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.967 ]

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

Entendendo o LDAP

Informix: Instalação - Configuração - Conceito

Instalação da Plataforma Hadoop

Injeção de SQL

Gerencie suas informações através de instruções SQL com selects turbinados (para leigos e experts)

  
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