Insomnia OAuth 2.0 com Keycloak e Strapi

Recentemente criei um artigo de como subir um ambiente com Docker para Strapi e Keycloak, pois não encontrei muito material atualizado para esse tema.

Você pode conferir esse artigo clicando aqui.

Então surgiu a dúvida de como utilizar esse fluxo usando o Insomnia, pois ficaria meio complicado ter de subir a aplicação de Frontend, para obter o JWT, e como eu também não encontrei um material atualizado sobre esse assunto, vou criar esse pequeno artigo e disponibilizar o Schema do Insomnia.


Ambinete

Bom suba seu ambiente já funcionando, para podermos executar corretamente o fluxo com o Insomnia, clique aqui para ver o outro artigo.

Observação: Temos de desativar duas configurações do Insomnia, vá em Settings em Request / Response desative o Validate certificates, e em Secutiry desative o Validate certificates during authentication.

Com tudo funcionando vamos iniciar a configuração, crie uma pasta no Insomnia chamada Auth, para termos um ambiente local de variáveis de ambiente, veja o print abaixo, o client_secret é o mesmo do último artigo:

Esses endereços do Keycloak, você pode conseguir acessando o Keycloak indo até Realms Settings, e lá no fim temos os Endpoints, apenas clique no link do OpenID:

Vamos criar uma Requisição do tipo GET e adicionar as configurações de OAuth 2.0:

Escolhemos o Authorization Code e adicionamos as variáveis de ambiente que criamos anteriormente, ali no Redirect URL o _.base_url vem do env global.

Feito isso já conseguimos obter os TOKENS do Keycloak clique em Fetch Tokens, caso a janela que abrir der algum erro, e não abrir novamente clique em Clear OAuth 2 session:

Observação: Caso tenha seguido o artigo anterior, e ja tenha um usuário criado e funcionando, só faça o Login, caso contrário pode fazer o Registro de um novo usuário, o resultado de ambos tem de ser esse, os tokens preenchidos:

Com esses TOKENS, ainda não conseguimos acesso ao Strapi, precisamos de mais um passo que seria criar uma requisição GET para o Strapi com esses TOKENS, nessa mesma Requisição vamos alguns QUERY PARAMS que são:

Esses valores são campos do Insomnia que pega automaticamente os valores recebidos, aqui no Macbook o atalho é Control + Space que abre uma série de opções, lá no final você encontra as de OAuth.

Agora vamos montar nossa requisição que nada mais é do que nosso _.base_url/auth/keycloak/callback o resultado tem de ser esse, veja o URL PREVIEW:

Feito isso para poder logar no Strapi, vá na aba Auth clique em EABLED para desativar o OAuth 2.0 e clique em Send para obter o jwt do Strapi, esse é o resultado:

Quando precisar revalidar os tokens apenas ative o OAuth e clique em Refresh Token, se quiser pode separar as requisições, mas eu preferi deixar assim.

Temos uma configuração de variáveis de ambiente global que pega esse jwt e deixa disponíveis para todas as rotas:

Esse valor do token, é o princípio do OAuth, são campos que conseguimos atualizar a cada requisição, a configuração dele é essa:

Observação: quando importamos algum Schema, pode acontecer do Insomnia se perder, e o campo Request ficar vazio então é necessário preencher novamente, quando você importar, já faça isso após a primeira requisição válida.

Eu tenho criado uma Requisição para Profiles que é um tipo de conteúdo que criei no Strapi, para você poder testar é necessário criar algum conteúdo no Strapi:

Adicione ele ao Escopo de Authenticated:

Pronto agora vamos fazer a requisição via Insomnia com o nosso Token válido:

Atualizei o Repositório já com o Profile criado e com o Schema do Insomnia:

https://github.com/alcir-junior-caju/study-ts-strapi-keycloak