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 DN –
cn=admin,dc=example,dc=org
- Bind Password –
admin
Usando SSL:
- Server – ldaps://localhost:636
- Bind DN –
cn=admin,dc=example,dc=org
- Bind Password –
admin
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.