Subindo rapidamente um LDAP

Quando a gente quer fazer algum teste de integração entre LDAP ou com Active Directory e alguma aplicação, muitas vezes pode ser útil ter um serviço de diretório desses rodando por perto para antecipar algumas situações.

Exemplos de necessidades:

  • Testar integração sem lidar com problbemas de rede;
  • Testar autenticação de uma aplicação antes de levá-la à rede onde tem um LDAP;
  • Verificar configurações antes de conectar com servidor de produção.

Enfim, você pode até ter outras necessidades e só tá querendo ver logo como é que sobe rapidamente esse LDAP.

É simples:

cd ~/
git clone https://github.com/oncase/sample-ldap
cd sample-ldap
docker-compose up

Pronto (claro, você precisa do git, Docker e Docker Compose instalados). A partir daí, o Docker vai baixar algumas imagens e subir o seu container, que vai exibir o log de startup do OpenLDAP.

Como você pode ver, esse exemplo de diretório tá no nosso repositório https://github.com/oncase/sample-ldap.

Conexões

Pra conectar-se basta utilizar as informações:

Protocolo ldap:

  • Server – ldap://localhost:389
  • Bind DNcn=admin,dc=example,dc=org
  • Bind Passwordadmin

Usando SSL:

  • Server – ldaps://localhost:636
  • Bind DNcn=admin,dc=example,dc=org
  • Bind Passwordadmin

NOTA: Se você estiver planejando usar SSL pra se conectar ao LDAP, mude os parâmetros domainname e hostname no arquivo docker-compose.yml de acordo com seu hostname. Para fazer testes com hostnames inexistentes ou inacessíveis, basta editar o arquivo /etc/hosts da seguinte maneira:

# adicione a seguinte linha para atribuir ldap.example.org ao ip da interface loopback
127.0.0.1 ldap.example.org

Estrutura do diretório

O diretório que é carregado é baseado no arquivo ldap/directory.ldif presente no repositório do git que fizemos clone no início do post.

A estrutura que o arquivo traz tem a seguinte aparêncica:

  • dc=example,dc=org
    • cn=admin
    • ou=Groups
      • cn=Administrator
      • cn=Developers
    • ou=People
      • cn=leonardo
      • cn=marpontes
      • cn=zach

Uma ferramenta muito legal pra explorar, debugar e modificar o seu diretório que está rodando, é o Apache Directory Studio™.

Comandos úteis do Docker

Para aqueles que não estão tão familiarizados com o Docker, segue um cheatsheet para nosso exemplo:

For those unfamiliar with Docker here are a few useful commands:

# Abre um SSH para o container que está rodando
docker exec -i -t [<CONTAINER-ID>|<CONTAINER-NAME>] /bin/bash

# Lista os containers em execução
docker ps

# Lista todos os containers
docker ps -a

# Remover container
docker rm [<CONTAINER-ID>|<CONTAINER-NAME>]

# Lista as imagens locais principais
docker images

# Lista todas as imagens locais
docker images -a

# Remove uma imagem local
docker rmi <IMAGE-ID>

LDAP no Pentaho

Se você quer testar a integração entre o Pentaho e o LDAP, a gente separou uma configuração do Pentaho Server que integra essa organização de diretório que vem com essa amostra de OpenLDAP.

Segue o arquivo:

userSearch.searchBase=ou\=People
allAuthoritiesSearch.roleAttribute=cn
allAuthoritiesSearch.searchBase=ou\=Groups
userSearch.searchFilter=(cn\={0})
allUsernamesSearch.searchFilter=objectClass\=Person
allAuthoritiesSearch.searchFilter=(objectClass\=groupOfUniqueNames)
providerType=ldapCustomConfiguration
contextSource.userDn=cn\=admin,dc\=example,dc\=org
populator.rolePrefix=
allUsernamesSearch.searchBase=ou\=People
adminUser=cn\=zach,ou\=People
adminRole=cn\=Administrator,ou\=Groups
populator.groupSearchBase=ou\=Groups
populator.convertToUpperCase=false
populator.searchSubtree=false
allUsernamesSearch.usernameAttribute=cn
populator.groupRoleAttribute=cn
contextSource.providerUrl=ldap\://localhost\:389/dc\=example,dc\=org
populator.groupSearchFilter=(uniqueMember\={0})
contextSource.password=admin

Que tal fazer esse teste de integração?

Divirtam-se.

Marcello Pontes
Analytics Architect & Front-ender at Oncase |