Existe uma grande chance de você ter lido sobre o termo “Keycloak” em algum artigo de TI ou até mesmo em alguma descrição de vaga no Linkedin, certo? Mas a pergunta é: Você sabe do que se trata?
Nesse texto vamos falar um pouco sobre essa ferramenta que vem ganhando espaço nas grandes companhias no atual cenário.
De uma forma bem resumida, o Keycloak é uma ferramenta criada pela empresa Red Hat e que faz o gerenciamento de credenciais de usuários e de suas permissões.
É o famoso “cara, crachá” ou então o “porteiraço do Enem”.
Pegando esse segundo exemplo, é como se o Keycloak fosse realmente o porteiro do Enem. A primeira coisa que ele faria quando um candidato chega ao seu local de prova, é conferir se as credenciais daquele candidato são válidas (trazendo pro universo de TI, seria uma validação de usuário/senha) e depois verifica se o usuário está dentro do tempo limite de entrada para saber se tem permissão ou não para adentrar o local de prova.
“Simples”, não é?
Quantas e quantas vezes nós já não participamos de projetos onde tínhamos a tabelinha de “usuários”, uma tabela de “funcionalidades” e um relacionamento entre elas? Depois disso tínhamos que implementar toda a questão do cadastro desses dados e a aplicação deles no nosso sistema. Isso demandava tempo, recurso e, principalmente, dinheiro! O Keycloak, como uma ferramenta “Open Source”, vem para tirar essa demanda do time de desenvolvimento.
O Keycloak pode também ser o repositório oficial de usuários de uma companhia, seja através de um cadastro de todos ou usuários, ou de um vínculo com uma base de dados já existente, como o ldap, por exemplo.
Alguns conceitos básicos da ferramenta são importantes para entendermos o seu funcionamento:
· Realm: É um grande repositório de usuários. É a parte principal das configurações dos dados.
· Client: São os “clientes” ou “aplicações” configuradas dentro do nosso realm.
· Role: É o conjunto de permissões que podem ser configuradas tanto para o client (quando queremos permissões específicas por clients) ou para o realm (quando queremos permissões independentes de clients).
· Group: São grupos que podemos criar com uma série de configurações para não precisarmos repetí-las para cada usuário.
Ex.: Grupo Departamento Pessoal.
· User: Essa tá fácil né? Aqui podemos cadastrar usuários e todas as suas configurações, ou simplesmente vincular a um grupo criado previamente.
Além desses conceitos mais básicos, tem mais 2 que vale a pena comentarmos aqui:
· Identity Providers: São provedores de identidade externos a companhia para que o usuário possa fazer seu próprio cadastro, como por exemplo, login através do Google, Facebook, Linkedin, etc.
· User Federation: Base de dados externas onde podemos vincular com o Keycloak.
Exemplo, se a companhia já possui uma base ldap com todos os usuários, é possível conectar com o Keycloak e automaticamente obter todos esses usuários sem que seja necessário o cadastro individual (e manual) deles.
Para ilustrar um pouco mais o funcionamento do fluxo das credenciais e gerenciamento das permissões, podemos observar a imagem abaixo:
Olhando a figura acima, podemos ver que do ponto 3 ao ponto 4, falamos sobre um Token de autenticação. Esse token JWT é uma forma criptografada de transitar informações como os dados do usuário que se autenticou, as permissões que ele possui, etc.
Esse é o token que vai transitar para cada chamada de serviço que faremos. O serviço, com a posse desse token, faz a decriptografia e verifica se o usuário tem a permissão necessária para acessar tal funcionalidade.
Legal, né?
Pensando em uma integração entre o Keycloak e um projeto Java Spring, toda a configuração é realizada apenas em um arquivo de propriedade, onde nele devemos configurar uma série de informações, como por exemplo:
E aí, gostaram? O tema ficou menos nebuloso?
Se vocês se interessarem nós podemos disponibilizar um projeto no github com a integração Keycloak + Java Spring para vocês.
Nos mande uma mensagem 😊
Ah, e se quiserem saber mais sobre a ferramenta, é só entrar na página oficial deles que é: https://www.keycloak.org/
Marcio Miranda – Software Developer na Verity
Boa tarde.
Estou interessado em aplicar o keycloak como opção de projeto. Se for possivel gostaria sim de um copia para inicio dos meus estudo
Usuario: keniosouza@hotmail.com
Bom dia
Estou estudando sobre keycloak e gostaria de ter acesso ao projeto no GitHub.
Usuário: aferrigocursos@gmail.com
Grato.
Boa noite
Estou começando os estudos sobre keycloak e gostaria de acesso ao projeto no github.
Meu usuário é wilsons80@gmail.com
Obrigado