Como criar uma federação de usuários com Keycloak e LDAP: um tutorial passo a passo
Na primeira parte dessa série de posts, vimos de maneira geral o funcionamento do Keycloak. Nessa segunda parte veremos como criar um user federation para importar usuários da nossa base de usuários contida no ldap.
Para a execução desse tutorial, subiremos um novo docker-compose que contém o Keycloak e o MySQL da aplicação, o openldap e o PhpLdapAdmin que nos ajudarão na manipulação do ldap.
Começaremos criando um arquivo docker-compose.yaml e adicionando o conteúdo a seguir dentro dele.
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql
volumes:
- /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: keycloak
MYSQL_USER: keycloak
MYSQL_PASSWORD: password
keycloak:
image: quay.io/keycloak/keycloak:latest
container_name: keycloak
environment:
DB_VENDOR: MYSQL
DB_ADDR: mysql
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: Pa55w0rd
ports:
- 8080:8080
depends_on:
- mysql
openldap:
image: osixia/openldap:1.5.0
container_name: openldap
environment:
LDAP_ORGANISATION: "Dexter currier"
LDAP_DOMAIN: "dexter.org"
LDAP_BASE_DN: "cn=admin,dc=dexter,dc=org"
LDAP_ADMIN_PASSWORD: "admin"
LDAP_CONFIG_PASSWORD: "config"
KEEP_EXISTING_CONFIG: "false"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
volumes:
- /var/lib/ldap
- /etc/ldap/slapd.d
- /container/service/slapd/assets/certs/
ports:
- "389:389"
- "636:636"
phpldapadmin:
image: osixia/phpldapadmin:latest
container_name: phpldapadmin
environment:
PHPLDAPADMIN_LDAP_HOSTS: "openldap"
PHPLDAPADMIN_HTTPS: "false"
ports:
- "9090:80"
depends_on:
- openldap
salve-o e execute o comando:
docker-compose up -d
Após a execução do docker-compose, podemos acessar o PhpLdapAdmin na porta 9090 do nosso host e o Keycloak na porta 8080. Na primeira parte desse lab criaremos um grupo e um usuário que será importado para o Keycloak.
Utilize o LDAP_BASE_DN e LDAP_ADMIN_PASSWORD definidos no nosso docker-compose para acessar o PhpLdapAdmin na localhost:9090.
Após o login no sistema, criaremos um grupo e um usuário na árvore de diretórios.
Selecione a sua árvore de diretórios.
Vá até a opção Create a child entry e crie um Generic: Posix Group. Esse passo é necessário para conseguir adicionar novos usuários.
Dê um nome ao seu grupo e salve-o.
Em seguida, crie um usuário dentro do ldap.
Agora iremos criar a federação no keycloak e iremos fazer a importação do usuário.
Para acessar o keycloak, acesse localhost:8080 com o usuário e senha que foram definidas no docker-compose.yaml.
Em seguida crie um novo realm.
Dentro desse realm navegue até a opção User Federation e crie um novo provider ldap com as seguintes configurações:
Deixaremos a opção Custom User LDAP Filter em branco, já que essa opção é interessante para importar apenas usuários de um determinado grupo.
Preencha o connection URL com o IP do host que está rodando o ldap.
Após salvar, o Keycloak sincronizará os usuários através da opção abaixo.
A imagem abaixo mostra o resultado após realizar todos os passos corretamente.
Ao selecionar a opção users > view all users, haverá uma confirmação de que os usuários do ldap foram importados para o Keycloak.
Nesse post vimos como importar usuários do nosso ldap para o Keycloak. No próximo post da série usaremos o Keycloak para gerenciar acessos à uma conta da AWS, fazendo uma ponte com o nosso ldap, o que facilitará a administração de usuários e permissões dentro da plataforma da Amazon.
Até lá.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Introdução ao MongoDB: aprenda sobre JSON, BSON e primeiros passos
Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB.
Monitoramento de Banco de Dados com o PMM da Percona
O que é o PMM? O Percona Monitoring and Management (PMM) é uma solução open source para observabilidade, monitoramento e gerenciamento de bancos de dados, com suporte a MySQL/MariaDB, PostgreSQL
Aprenda a usar o comando chattr para bloquear arquivos e diretórios
Nesta dica da semana da 4Linux, iremos aprender o comando chattr, utilizado para bloquear arquivos e diretórios, ou seja criar restrições de acesso a diretórios e arquivos. O que é?




















