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
Primeiros passos com OpenStack: Como criar um ambiente de testes
Sempre que falamos sobre “primeiros passos” em alguma tecnologia, realizamos algum pequeno teste como um “Hello World” em uma linguagem ou um pequeno blog quando estamos estudando um framework web
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 é?
Aprenda a usar a base de dados Pagila para testes no PostgreSQL
Quando comecei aprender sobre banco de dados, senti falta de bases de dados prontas para fins de teste com o PostgreSQL. Eu queria aplicar conceitos aprendidos sobre SELECT, INSERT, UPDATE