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.
- 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.
version: '3' volumes: mysql_data: driver: local services: mysql: image: mysql:5.7 volumes: - mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: keycloak MYSQL_USER: keycloak MYSQL_PASSWORD: password keycloak: image: quay.io/keycloak/keycloak:latest environment: DB_VENDOR: MYSQL DB_ADDR: mysql DB_DATABASE: keycloak DB_USER: keycloak DB_PASSWORD: password KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: Pa55w0rd # Uncomment the line below if you want to specify JDBC parameters. The parameter below is just an example, and it shouldn't be used in production without knowledge. It is highly recommended that you read the MySQL JDBC driver documentation in order to use it. #JDBC_PARAMS: "connectTimeout=30000" ports: - 8080:8080 depends_on: - mysql
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:
docker-compose up -d
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.
KEYCLOAK_USER: admin 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.
- 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:
About author
Você pode gostar também
PostgreSQL vs MySQL: Conheça os bancos de dados mais usados
Atualmente, existem dois bancos de dados que estão entre os mais usados no mercado. São eles: o PostgreSQL e o MySQL. Saiba mais sobre cada um deles, lendo o post!
Segurança de Software: A Importância da Auditoria de Código e Melhorias de Processos
Resumo: Este post visa esclarecer a importância da segurança de software e como a auditoria de código e melhorias nos processos são itens fundamentais para a qualidade. A auditabilidade de
Como usar Linux no Windows sem Dual Boot: Guia Prático do WSL
Se você está começando seus estudos no linux e tem receio de realizar um dual boot em seu computador e correr o risco de perder todos seus arquivos e ou