- Acesse o Keycloak através do endereço http://localhost:8080
- Clique em Administration Console
- Utilize o usuário e senha
adminpara logar
- Acesse a lista de clientes em Clients no menu lateral esquerdo
- Clique em Create
- Em Client Id informe
orders-client - Em Client Protocol mantenha
openid-connect - Clique em Save
- Em Access Type escolha
confidential - Defina Implicit Flow Enabled como
on - Defina Service Accounts Enabled como
on - Em Valid Redirect URIs informe
https://jwt.ms - Em Advanced Settings altere o campo Access Token Lifespan para
1 daye clique em Save (o valor padrão é 1 minuto e isso dificulta os testes) - Clique em Save
- Clique em Service Account Roles, remova todas as roles em Assigned Roles
- Clique em Credentials no topo da página e copie o valor do campo Secret. Este valor deverá ser usado como
client_secret.
Agora é possível fazer uma chamada a API do KeyCloak para requisitar um token de acesso para administração do realm
Remover as roles que são habilitadas por padrão permite a geração de tokens mais enxutos
curl --location --request POST 'http://localhost:8080/realms/master/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=orders-client' \
--data-urlencode 'client_secret=Y77qZLCgJDzHG4S6aS3IxuZmdALJXHzl' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=openid'
{
"access_token": "eyJh...7ZLw",
"expires_in": 36000,
"refresh_expires_in": 0,
"token_type": "Bearer",
"id_token": "eyJh...7ZLw",
"not-before-policy": 0,
"scope": "openid email profile"
}- Acesse a lista de clientes em Clients no menu lateral esquerdo
- Acesse o cliente
orders-client - Acesse o menu Mappers e clique em Create
- Defina o nome como
username - Em Mapper Type selecione o valor
Hardcoded Claim - Em Token Claim Name informe
kong-consumer - Em Claim Value informe
orders-client - Em Claim Json Type selecione
string - Clique em Save.
Ao gerar o token, a claim kong-consumer estará disponível mostrando o nome do consumidor do Kong atribuído como claim.
- Acesse Users no menu lateral esquerdo
- Clique em Add user
- Em username coloque
johndoe - Em email coloque
john@doe.com - Defina User Enabled como
on - Clique em Save
- Clique em Credentials
- Defina o Password e Password Confirmation como
pwd - Temporary como
off - Clique em Set password e na sequência Set password
Agora é possível gerar um token de usuário usando a aplicação
orders-client.
curl --location --request POST 'http://localhost:8080/realms/master/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=orders-client' \
--data-urlencode 'client_secret=Y77qZLCgJDzHG4S6aS3IxuZmdALJXHzl' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=johndoe' \
--data-urlencode 'password=pwd'Pegue a URL do token em http://localhost:8080/realms/master/.well-known/openid-configuration
Acesse o endereço abaixo e será possível fazer o login de forma interativa. Utilize o usuário johndoe e senha pwd.
- No menu lateral esquerdo acesse Groups
- Clique em New
- Informe o nome
orders-users - Clique em Save
- No menu lateral esquerdo acesse Users
- Clique em View all users
- Clique em Edit no usuário
johndoe - Selecione a aba Groups
- Clique em
orders-userse sem seguida clique em Join - No menu lateral esquerdo clique em Clients
- Selecione
orders-client - Clique em Mappers e em seguida em Create
- Em Name informe
groups - Em Mapper type informe
Group Membership - Em Token claim name informe
groups - Clique em Save
Requisite novamente um token para o usuário johndoe e agora será possível recuperar a claim groups.
- No menu lateral esquerdo clique em Clients
- Selecione
orders-client - Clique em Roles em seguida em Add Role
- Em Role Name informe
writere clique em Save - Volte a tela de roles e repita o procedimento para criar a role
reader. - No menu lateral esquerdo acesse Users
- Clique em View all users
- Clique em Edit no usuário
johndoe - Clique em Role Mappings
- Em Client Roles selecione
orders-client - Fique a vontade para escolher as roles que foram definidas previamente. Para adicionar a role clique em Add selected
- Retorne ao cliente
orders-client - Clique em Mappers em seguida em Add builtin
- Marque Client Roles e clique em Add selected
- Para ficar mais claro a utilização da claim no token clique em Edit em client roles.
- Altere Token Claim Name para
roles. - Clique em Save
Ao requisitar o token haverá duas claims mostrando as roles para evitar isso, edite o
orders-client, vá até Client Scopes e removarolesde Assigned Default Client Scopes.
- No menu lateral esquerdo clique em Clients
- Selecione
orders-client - Clique em Client Scopes
- Em Assigned Default Client Scopes mantenha somente
profileeemail - Em Assigned Optional Client Scopes mantenha somente
offline_access
Ao requisitar um novo token ele virá somente com algumas informações.