Neste artigo vamos dar continuidade ao artigo Como integrar o LDAP (AD) no Keycloak 22.0.3 porém vamos mostrar como criar um novo Realm, e as principais diferenças entre os principais tipos de clientes. Caso você tenha alguma dúvida sobre outros temas Keycloak não deixe de comentar.
Como criar um Realm no Keycloak
Com uma instalação completa, basta navegar no lado esquerdo e ir em “Realm”. Nesse primeiro passo será necessário informar apenas o nome que deseja usar conforme imagem abaixo:
Com isso o básico já está pronto. Agora vamos separar o restante do artigo em tópicos, dessa forma você poderá ir direto para configuração que desejar.
Tipos de Autenticação do cliente no Keycloak
Atualmente o Keycloak suporta dois tipos de Autenticação do cliente, que são: confidencial e público.
Autenticação Pública: Use esse tipo para quando estamos falando de aplicações públicas, por exemplo uma spa angular ou React ou até mesmo um app para android ou IOS em geral são aplicações que podem ser acessadas de forma pública ou, em outras palavras, o frontend.
Autenticação Confidencial: Esse é o tipo indicado para aplicações backend que precisam provar que são eles mesmos, e em geral vão fazer algo em nome do usuário logado. Isso porque além de um JWT devidamente válido ele também precisará de um segredo para conseguir se comunicar com o Keycloak, evitando assim que outras aplicações se passem por aplicações legítimas.
Fluxos de autenticação no Keycloak
Após definir o tipo de autenticação, o próximo passo é definir os fluxos de autenticação, esse passo é muito importante, pois é quando definimos, por exemplo, se esse cliente poderá ou não iniciar o fluxo de login ou se ele apenas vai receber um JWT já autenticado e ele apenas terá que verificar se ele ainda é válido.
Dentre todos os tipos vamos destacar Direct access grants que é quando indicamos que o cliente pode receber o login e senha e negociar um token com o keycloak, fazer login, em vez de receber apenas um token previamente gerado. Service accounts roles habiltando você está indicando ao keycloak que aquele serviço pode ser acessado por uma conta de serviço, muito útil quando temos uma rotina que precisa acessar determinado serviço autenticado, em vez de usar um usuário com login e senha, usamos um com token.
Para os demais tipos a documentação do Keycloak pode ser consultada, porém para a maioria dos usuários os valores padrões já atendem a maioria das instalações.
Configurações de login
Nesse passo vamos definir não somente a URL de login como também rotas de redirecionamento, página inicial e url de logout. Por exemplo, se nosso app roda na url http://localhost:3000 e ela é responsavel tanto por iniciar o login quanto finalizar, no keycloak ele estaria preenchido dessa forma:
Poderíamos também em vez de definir urls relativamente genéricas, definir a url exata, sendo uma ou mais.
Conclusão
Com isso já temos o nosso cliente criado, recomendamos que sempre que sua aplicação não for um monolito, que crie um cliente para cada projeto a fim de deixar a estrutura do projeto também representada no fluxo de autenticação. Como próximo passo você talvez tenha interesse em ver como permitir login no keycloak via AD.
Caso tenha alguma dúvida, não deixe de comentar.