OpenLDAP com suporte ao MySQL
clodonil August 16th, 2009
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.
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.schemapidfile /opt/ldap/var/run/slapd.pid
argsfile /opt/ldap/var/run/slapd.argsloglevel 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 senhasubtree_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.