Keycloak: Gerenciamento de Identidade e Acesso para WebApps e Serviços RESTful
O Keycloak [1] é um software open source de gerenciamento de identidade e acesso voltado para WebApps e RESTful web services. Inicialmente desenvolvido em 2014 pela comunidade de JBoss. Em março de 2018, entrou para a supervisão da Red Hat, que o utiliza como projeto upstream para seu produto RH-SSO.
O Keycloak usa padrões de protocolo aberto como OpenID Connect ou SAML 2.0 para proteger suas aplicações. Os WebApps redirecionam o usuário para o servidor de autenticação Keycloak, onde ele insere suas credenciais. Isso é importante porque os usuários estão completamente isolados dos aplicativos e estes nunca veem as credenciais do usuário. Em vez disso, os aplicativos recebem um token de identidade. Esses tokens podem conter informações de identidade como nome de usuário, endereço, e-mail e outros dados de perfil. Eles também podem conter dados de permissão para que sua aplicação possa tomar decisões de autorização. Esses tokens também podem ser usados para fazer chamadas seguras em serviços baseados em REST.
O Keycloak possui uma série de funcionalidades que são de interesse de desenvolvedores que querem colocar uma camada de autenticação unificada em suas aplicações, são elas:
- Single-Sign On e Single-Sign Out
- Suporte à OpenID Connect
- Suporte à OAuth 2.0
- Suporte à SAML
- Identity Brokering – Autentique com OpenID Connect externo ou provedores de identidade SAML
- Login social – Habilite o login com Google, GitHub, Facebook, Twitter e outras redes sociais
- Federação do usuário – Sincronize usuários de servidores LDAP e Active Directory
- Kerberos bridge – Autentique automaticamente os usuários que estão logados em um servidor Kerberos
- Console Admin para gerenciamento central de usuários, funções, mapeamentos de funções, clientes e configuração
- Console de gerenciamento de contas que permite aos usuários gerenciar centralmente suas contas
- Suporte a temas – personalize todas as páginas voltadas para o usuário para integrá-las aos seus aplicativos e marcas
- Autenticação de dois fatores – suporte para TOTP / HOTP via Google Authenticator ou FreeOTP
- Fluxos de login – auto-registro opcional do usuário, recuperar senha, verificar e-mail, exigir atualização de senha etc.
- Gerenciamento de sessão – os próprios administradores e usuários podem visualizar e gerenciar as sessões do usuário
- Mapeadores de tokens – Mapeie atributos de usuário, funções e demais recursos como desejar em tokens e instruções
- Suporte a CORS – os adaptadores de cliente possuem suporte integrado para CORS
- Service Provider Interfaces (SPI) – uma série de SPIs para permitir a personalização de vários aspectos do servidor. Fluxos de autenticação, provedores de federação de usuário, mapeadores de protocolo e muito mais
- Adaptadores de cliente para aplicativos JavaScript, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring etc.
- Suporta qualquer plataforma/linguagem que tenha uma biblioteca OpenID Connect Relying Party ou biblioteca de provedor de serviços SAML 2.0
Nesta primeira parte veremos como é fácil subir um servidor Keycloak a partir de um Docker compose e aboradaremos alguns conceitos básicos sobre a ferramenta. O Keycloak oferece alguns arquivos yaml’s prontos para uso e que podem ser encontrados nesse link.
11 | - mysql_data:/var/lib/mysql |
13 | MYSQL_ROOT_PASSWORD: root |
14 | MYSQL_DATABASE: keycloak |
16 | MYSQL_PASSWORD: password |
18 | image: quay.io/keycloak/keycloak:latest |
26 | KEYCLOAK_PASSWORD: Pa55w0rd |
Importante: o arquivo Docker compose que utilizei para esse exemplo, usa o banco de dados MySQL, mas podemos utilizar outros bancos sem grandes diferenças.
Após fazer o download do arquivo docker-compose.yml de sua preferência, execute os containers com o comando:
Ao acessar o endereço localhost:8080 teremos acesso à seguinte página:

Entre em Administration Console e será pedido login e senha para acesso. Essas credenciais foram configuradas no arquivo docker-compose.yml.

2 | KEYCLOAK_PASSWORD: Pa55w0rd |
é importante que essas informações sejam alteradas.
O Keycloak utiliza um sistema de realms para gerenciar conjuntos de usuários, credenciais, funções e grupos. Um usuário pertence e efetua login em um realm. Os realms são isolados uns dos outros e só podem gerenciar e autenticar os usuários que controlam.
Quando logamos pela primeira vez em um servidor Keycloak entramos em um realm chamado master, esse realm é utilizado para adicionamos usuários com acesso administrativo ao servidor. Se pensarmos em nível de hierarquia, esse realm estaria acima dos demais.
Nesse menu inicial, temos:
- Master – O realm em que estamos trabalhando; é fortemente recomendado que antes configurar nossa aplicação, seja criado antes um novo realm para os usuários que vão acessar o sistema. Para criar esse novo realm, coloque o mouse sobre o Master, e clique em “Add realm”.
- Realms Settings – Página de configuração do realm, aqui podemos configurar o nome do realm, as informações que serão mostrado ao usuário na tela de login, configurar o provedor de email para confirmação de usuário, entre outras coisas.
- Clients – Clients são as aplicações que usam o keycloak como provedor de autenticação.
- Clients Scopes – Escopo de cliente que é utilizado para facilitar a criação de novos clientes, compartilhando algumas configurações comuns.
- Roles – São permissões que podem ser atribuídas a usuários, grupos ou à outras roles.
- Identity Providers – Aqui podemos configurar a forma de login usando outras plataformas, tais como redes sociais.
- User Federation – Serve para utilizar bases de dados externas na hora de fazer login. Você pode configurar o login com LDAP ou Kerberos.
- Authentication – Como será feito o processo de identificação e validação de um usuário.
Nos próximos posts da série, faremos a configuração de um User Federation para que seja possível garantir acesso aos aplicativos a partir de um LDAP (FreeIPA) e adicionaremos o Keycloak como provedor de identidade à algumas aplicações de terceiros.
Até lá!
Mais informações:
[1] Keycloack: https://www.keycloak.org/
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
CURSOSCONSULTORIA