top of page

KEYCLOAK, o que vocĂȘ deveria saber sobre o assunto

  • Foto do escritor: Alexandro Barsi
    Alexandro Barsi
  • 3 de mai. de 2022
  • 3 min de leitura

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



bottom of page