Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

 Voltar a Blog
Tela cheia

OpenLDAP com suporte ao MySQL

16 de Agosto de 2009, 0:00 , por Software Livre Brasil - 1Um comentário | Ninguém está seguindo este artigo ainda.
Visualizado 2617 vezes
<!-- Easy AdSense V2.72 --> <!-- Post[count: 3] -->

 By:Cristiano Bosenbecker Hellwig

OpenLDAP é um software livre que implementa o protocolo LDAP. Ele é usado para centralizar informações de forma hierárquica, por exemplo, centralizar senhas de usuários de diversos servidores em uma única base.
Também é usado para centralizar aplicativos de servidores como (proxy, samba, ftp, emails, lista de endereços), entre outros.
O LDAP permite a centralização de informações sobre usuários, senhas, diretórios home etc, em um único lugar na rede.


LDAP – Protocolo Leve de Acesso a Diretórios (tuttle 2003). Afirma que o LDAP é um padrão aberto capaz de facilitar, de forma flexível, o compartilhamento, a manutenção e o gerenciamento de grandes volumes de informações, definindo um método-padrão de acesso e atualização de informações dentro de um diretório.

O que é um diretório?

Diretório literalmente significa "algo usado para indicar direções", ou seja, algo que indica um caminho para se chegar àquilo que se procura. Exemplo disso: a lista telefônica, que você utiliza para pegar o endereço, telefone e tudo mais, caso queira comprar um lanche ou algo do tipo. Qualquer aplicação que tiver suporte ao protocolo LDAP poderá se conectar a sua base e obter as informações necessárias. A procura do LDAP funciona entrando na raiz e vai percorrendo os nós filhos até achar a informação desejada, de forma organizada, orientada a objetos. Não se usa mais a árvore de diretórios do estilo X.500, é usado agora estilo DNS.

O objetivo dessa documentação  é a integração do  openldap com banco de dados mysql, ao invés de usar o berkeleyDB.No caso é muito usado, quando queremos fazer o openldap se adequar em alguma aplicação proprietária ou software livre, que já tenha sua base de usuários  e senhas cadastradas do banco de dado mysql.

Compilação usando debian5 em uma máquina virtual, 256 de RAM , 10 GB HD.

Ambiente de teste – preparação

Vamos compilar o openldap com suporte ao Berkeley DB,  logs (Syslog) , SQL. Uma partição do hd, reservada apenas para o ponto de montagem /opt , onde ficará todos os aplicativos compilados. Se logue como root  no sistema linux, e agora  mão na massa ! 

# cd /usr/src 

Baixando o código-fonte dos aplicativos. Instalando os softwares necessários para compilação dos código-fontes.

#  apt-get install g++ make 

Bibliotecas necessárias para o openldap

# apt-get install autotools-dev libltdl3 libltdl3-dev libtool

 Berkeley DB ultima versão  estável

# wget http://ftp.momo-i.org/pub/other/db-4.7.25.tar.gz

Openldap ultima versão estável

# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.16.tgz

Além da compilação do openldap com suporte sql, é preciso compilar o ODBC   e instalar o driver pré-compilado do mysql (libmyodbc) por apt-get.

# wget http://www.iodbc.org/downloads/iODBC/libiodbc-3.52.6.tar.gz
# apt-get install libmyodbc

MySQL 5.0 ( Banco de Dados )

# apt-get install mysql-server-5.0

Configurando código-fonte e instalando BerkelyDB e OpenLDAP

Vamos agora na parte de configuração do código-fonte  e instalação aos respectivos caminhos corretos.

1) Configurando  e compilando código fonte  do Berkerley DB (Base de Dados da Berkerley).

Entrando no diretório padrão, onde serão feitas as compilações e configurações.

# cd /usr/src/

Descompactando o código fonte do BerkeleyDB

# tar zxvf db-4.7.25.tar.gz

Entrando no diretório descompactado.

# cd db-4.7.25/build_unix

Configurando o código fonte do BerkeleyDB

# ../dist/configure –prefix=/opt/db4725

Compilando o código fonte e instalando o aplicativo no seguinte diretório /opt/db4725

# make && make install

2) Configurando e compilando código fonte do ODBC .

Entrando no diretório padrão, onde serão feitas as compilações e configurações.

# cd /usr/src/

Descompactando o código fonte do libiodbc.

# tar zxvf libiodbc-3.52.6.tar.gz

Entrando no diretório descompactado.

# cd libiodbc-3.52.6

Configurando o código fonte do libiodbc

# ./configure –prefix=/opt/odbc –with-pthreads

Compilando o código fonte e instalando  o aplicativo no seguinte diretório /opt/odbc

# make && make install

3) Configurando e compilando código fonte do Openldap com:

Suporte a criptografia (crypt , plaintext).
Suporte ao Banco de Dados ( bdb , hdb,sql(ODBC, para suporte a outros banco de dados).
Suporte a Réplica.
Suporte a Sistema de Logs (Syslog).
Entrando no diretório padrão, onde serão feitas as compilações e configurações.

# cd /usr/src/

Descompactando o código fonte do openldap

# tar zxvf openldap-2.4.16.tgz

Entrando no diretório descompactado.

# cd /usr/src/openldap-2.4.16

Exportando  as variáveis de ambiente necessárias para ter uma instalação com sucesso.

# export CPPFLAGS="-I/opt/odbc/include -I/usr/include/ -I/opt/db4725/include"
# export LDFLAGS="-L/opt/odbc/lib -L/opt/db4725/lib"
# export LD_LIBRARY_PATH="/opt/db4725/lib"

Setando o caminho das  libs de cada aplicação,  no arquivo central de bibliotecas do sistema linux. 

# echo "/opt/db4725/lib" >> /etc/ld.so.conf
# echo "/opt/odbc/lib" >> /etc/ld.so.conf

Atualizando Bibliotecas do sistemas.

# ldconfig

Configurando o código fonte do openldap.

# ./configure –prefix=/opt/ldap –sysconfdir=/opt/ldap/etc –enable-crypt=yes –enable-modules=yes  –enable-syslog=auto –enable-slurpd=yes –enable-bdb –enable-sql=yes

Conferindo se faltou alguma dependência do openldap.

# make depend

Compilando o código fonte e instalando  o aplicativo no seguinte diretório /opt/ldap.

# make  &&  make install

Setando os binários no PATH e setando o OpenLDAP na inicialização

Colocando todos os caminhos de binários de aplicativos no PATH do Linux. Use seu editor predileto, no caso usei o vim

/opt/db4725/bin:/opt/odbc/bin:/opt/ldap/bin:/opt/ldap/libexec:/opt/ldap/sbin

# vi /etc/profile

Modificar o PATH atual de :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

para:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/db4725/bin:/opt/odbc/bin:/opt/ldap/bin:/opt/ldap/libexec:/opt/ldap/sbin"

Agora vamos salvar e sair do arquivo. Agora vamos reler o arquivo de variáveis de ambiente e setar o PATH novo.

# source /etc/profile

Pronto, agora você estará habilitado para acessar todas as ferramentas de administração dos aplicativos a partir de qualquer lugar, sem precisar o caminho de localização do arquivo.

# Colocando o openldap rodar na inicialização do  sistema linux.

Ficará assim.

# vi /etc/rc.local

/opt/ldap/libexec/slapd

exit 0

Pronto.Feito isso, tudo ok.

Configurando o OpenLDAP para acesso ao MySQL (parte1)

Configurando o Openldap para acesso ao mysql. Nesse estudo de caso, não abordarei sobre configurações do mysql.

Então mão na massa.

 Como administrador do sistema linux, vamos criar base de dados, chamado ldap.

 # mysqladmin -u root -p create ldap

Agora vamos alterar o arquivo de configurar slapd.conf, para se utilizar do modo SQL

Segue as instruções abaixo:

Use seu editor predileto, no caso usei vim.

# vi /opt/ldap/etc/openldap/slapd.conf 

allow bind_v2

# Schema and objectClass definitions

include         /opt/ldap/etc/openldap/schema/core.schema
include         /opt/ldap/etc/openldap/schema/cosine.schema
include         /opt/ldap/etc/openldap/schema/inetorgperson.schema

pidfile         /opt/ldap/var/run/slapd.pid
argsfile        /opt/ldap/var/run/slapd.args

loglevel        256
moduleload      back_sql

database sql
suffix          "dc=dominio,dc=com"
rootdn          "cn=admin,dc=dominio,dc=com"

# Pode-se utilizar o tipo de criptografia CRYPT, to usando plaintext, apenas para fins didáticos.
# Coloque  a senha de administrador do openldap.

rootpw       senha

dbname ldap
dbuser root
dbpasswd senha

subtree_cond "ldap_entries.dn LIKE CONCAT(’%',?)"
insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
has_ldapinfo_dn_ru no

 

Configurando o OpenLDAP para acesso ao MySQL (parte2) 

Configurando o ODBC

Confirme a opção, para adicionar o Mysql automaticamente como um driver ODBC. Que modificará o arquivo /etc/odbcinst.ini

Ficando assim:

[MySQL]

Description             = MySQL driver
Driver           = /usr/lib/odbc/libmyodbc.so
Setup           = /usr/lib/odbc/libodbcmyS.so
CPTimeout              =
CPReuse                 =
UsageCount            = 1

# dpkg-reconfigure libmyodbc

Agora no arquivo /etc/odbc.ini. Ficará desse jeito, configurando com os dados do servidor mysql.

[ODBC Data Sources]

ldap     = MySQL LDAP DSN 

[ldap]
Driver       = /usr/lib/odbc/libmyodbc.so
Description  = MySQL  LDAP DSN
Server       = localhost
Port         = 3306
User         = root
Password     = senha
Database     = ldap

# Coloque o caminho correto do socket do mysql
Socket       = /var/run/mysqld/mysqld.sock

# Coloque o caminho de onde você compilou o libiodbc

[ODBC]
InstallDir    = /opt/odbc/lib/

Agora com ODBC e Openldap configurados e instalados,  vamos testar a conexão entre o  ODBC e o MySQL, antes de iniciar o serviço do OpenLdap.

Configurando o OpenLDAP para acesso ao MySQL (parte3)

Vamos digitar  ?  para ver todas as conexões.

# iodbctest

iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008

Enter ODBC connect string (? shows list): ?

DSN                              | Driver         
——————————————————————————
ldap                             | MySQL LDAP DSN
Enter ODBC connect string (? shows list):

Configurando o OpenLDAP para acesso ao MySQL (parte4)

Testando comunicação entre ODBC com  mySQL

# iodbctest

iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008 
Enter ODBC connect string (? shows list): ?
DSN                              | Driver
——————————————————————————
ldap                             | MySQL LDAP DSN             

Enter ODBC connect string (? shows list):  DSN=ldap

Caso ocorrer algum erro, revise as configurações do /etc/odbc.ini e my.cnf. Se estiver tudo ok, aparecerá a seguinte mensagem.

Enter ODBC connect string (? shows list): DSN=ldap
Driver: 03.51.15 (libmyodbc3.so)

SQL>
Para testar, digite:

SQL>
show databases;
Database
—————————————————————-
information_schema
ldap
mysql
result set 1 returned 3 rows.
SQL>

Pronto , está tudo funcionando.

Fazendo o OpenLDAP trabalhar com MySQL (final)

Agora com ambos funcionando, é necessário importar algumas tabelas que vêm com o código fonte do openldap, que fica em: Entrando no diretório mysql, que contém as tabelas necessárias para o funcionamento do openldap com o mysql.

# cd /usr/src/openldap-2.4.16/servers/slapd/back-sql/rdbms_depend/mysql/

Criando todas as tabelas e inserindo informações de exemplos.

# mysql -u root -p ldap < backsql_create.sql
# mysql -u root -p ldap < testdb_data.sql
# mysql -u root -p ldap < testdb_metadata.sql

Bom a partir de agora, toda a estrutura necessária para funcionar o openldap com mysql, está pronta. Depois utilizando o phpmyadmin, altere as informações, de acordo com o seu domínio cadastrado no LDAP.

Pronto vamos inicializar o Openldap e m  modo debug, para testar senão aparecerá nenhum erro.

# slapd -d5

Caso contrário, irá aparecer umas mensagens de conexão mysql. Mostrando que está tudo funcionando corretamente. Para iniciar sem o debug, (processo normal).

Apenas digite: 

# slapd

Tudo pronto, valeu a pena o trabalho de compilar.

Agradecimentos

Quero agradecer aos  meus amigos Clodonil Honório, que escreveu o livro OpenLDAP, uma abordagem integrada e também ao meu amigo Nielsen Alves de Oliveira.

 


Fonte: http://www.nisled.org/?p=1205

1Um comentário

  • B2ab9f44403cd0b02e12b6a9901823d9?only path=false&size=50&d=404Luiz(usuário não autenticado)
    8 de Outubro de 2009, 13:26

    PRoblemas

    Entao show seu tutorial, eu segui ele direitinho, mas nao estou conseguindo condifurar meu ambiente. Eu estou acessando vi navegador e quando vou fazer login e exibido a mensagem de que nao foi possivel iniciar o TLS.
    Tem como voce me ajudar.

    Obrigado


Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.