Global (form everywere) Address List, ou como usar o motor de LDAP para área de Contactos – Parte 1

Bom dia a todos,

Perguntaram-me recentemente se havia a possibilidade de utilizar um Red Hat IDM / IPA como repositório centralizado dos contactos de “pessoas ou organismos de interesse” para uma empresa.

Tendo em conta que a empresa em questão tinha já um IDM a funcionar, e não estavam interessados em que fosse construido um openLDAP para o efeito surgiu o desafio.

(Nota: Todos os passos assumem que já existe em funcionamento um IDM/IPA).

Em primeiro lugar foi necessário agrupar os contactos dos utilizadores que desejavam centralizar a informação, e proceder a sua extração do seu local original (google, owncloud, etc).
Muita atenção com a qualidade dos dados que extraem de forma a garantir a qualidade na informação importada.

Com os dados em mão, e tendo em conta que o cliente (e o suporte) não queriam misturadas as contas de autenticação centralizada, com o repositório de contactos, optei por fazer uma nova OU dentro da árvore do Cliente:

# cat create_ou.ldif

dn: ou=addressbook,dc=domain,dc=com
objectclass:organizationalunit
ou: addressbook
description: generic groups branch

dn: ou=fabricantes,ou=addressbook,dc=domain,dc=com
objectclass:organizationalunit
ou: nuno
description: generic groups branch

Seguido de um inport da mesma para dentro da árvore de ldap com o seguinte comando:

# ldapadd -xWvD “cn=directory manager”  -c  -p 389 -h idm.domain.com-W -f create_ou.ldif

Em seguida, e com os dados em formato vcard (exportado nativamente tanto pelo google como pelo owncloud), é necessário converter os dados em formato ldap/ldif para importação dentro do IDM.
Para tal, recomendo uma ferramenta de conversão extremamente útil de nome vcfconvert e pode ser executado via web ou via script local.

No meu caso, e tendo em conta a sensibilidade de alguma da informação para o Cliente optei por descarregar o script e executar localmente:

./vcfconvert.sh -p -f ldap -d \; -b “ou=fabricantes,ou=addressbook,dc=domain,dc=com” -o ../contacts.vcf  > contactos.ldif

Nota: onde se lé contacts.vcf reporta ao ficheiro extraído originalmente (por exemplo do google accounts).

Finalmente, chegamos a altura de carregar os nossos dados dentro do nosso ldap:

# ldapadd -xWvD cn=directory manager -c -p 389 -h idm.domain.com -W -f  contactos.ldif

Finalmente, podemos validar o resultado do nosso import através do comando:

#ldapsearch -h idm.domain.com-p 389 -D “cn=Directory Manager”  -b “ou=fabricantes,ou=addressbook,dc=domain,dc=com”  -W

Os dados são inclusive visíveis dentro de uma address list de outlook quando configurado para ir ler ao host do IDM, com a apropriada search base:  ou=fabricantes,ou=addressbook,dc=domain,dc=com.

Como podem reparar, todos os acessos foram feitos via o Directory Manager, e como tal só estão visíveis e editáveis por ele.
No próximo post, ensinarei a colocar ACI’s (ACLs) de forma a que todos os utilizadores de um dito group dentro do IDM (por exemplo GALUsers) tenham permissões de edição e leitura, e todos os restantes users de leitura.

Caso tenham alguma duvida, estou como sempre disponível.

Abraço.
Nuno