Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fosouzadev-public/webapi-rest-keycloak
Web Api Rest simples para validar um token de usuário gerado pelo Keycloak
https://github.com/fosouzadev-public/webapi-rest-keycloak
authorization csharp keycloak rest-api
Last synced: 16 days ago
JSON representation
Web Api Rest simples para validar um token de usuário gerado pelo Keycloak
- Host: GitHub
- URL: https://github.com/fosouzadev-public/webapi-rest-keycloak
- Owner: fosouzadev-public
- Created: 2024-10-24T10:22:19.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-10-25T22:58:52.000Z (3 months ago)
- Last Synced: 2025-01-06T13:27:09.714Z (24 days ago)
- Topics: authorization, csharp, keycloak, rest-api
- Language: C#
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Web Api Rest Keycloak
Web Api Rest simples para validar um token de usuário gerado pelo Keycloak## Comandos utilizados para criação do projeto
```csharp
dotnet new sln -n WebApiRestKeycloak
dotnet new webapi --use-controllers -n WebApiServer
dotnet sln add ./WebApiServer
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
```## Keycloak
Documentação para criar [container do Keycloak](https://www.keycloak.org/getting-started/getting-started-docker), criar um usuário básico e gerar um token JWT para teste.## Configurações do Keycloak
Algumas das etapas abaixo possuem detalhes na [documentação](https://www.keycloak.org/getting-started/getting-started-docker) que não serão mencionados aqui.Crie um novo `Realm`, e entre em suas configurações.
Em `Realm roles`, crie as roles desejadas, exemplo: `admin`, `manager`, `user`, etc.
Em `Groups`, crie os grupos para agrupar as roles conforme desejado, exemplo: um grupo `administrators` pode agrupar as roles `admin` e `manager`. Nas configurações do grupo, utilize a aba `Role mapping` para adicionar as roles.
Em `Users`, crie um novo usuário, e faça as seguintes configurações:
* Na aba `Credentials`, defina uma senha para o usuário;
* Na aba `Groups`, associe o(s) grupo(s) criado(s).Em `Clients`, crie um novo cliente para representar a aplicação que o usuário utilizará para fazer login. Nas configurações do cliente, na aba `Client scopes`, faça as seguintes configurações:
* Exclua todos os escopos que são adicionados por padrão;
* Adicione o escopo `basic`, ele é responsável por adicionar o id do usuário no token com a nomenclatura `sub`;
* Entre no escopo `{ClientName}-dedicated` e faça as seguintes configurações:
* Adicione um novo `mapper` do tipo `By configuration` chamado `Audience`. Defina um nome e selecione sua aplicação no campo `Included Client Audience`, verifique se está marcado `On` para adicionar no token;
* Adicione um novo `mapper` do tipo `By configuration` chamado `User Realm Role`. Defina um nome, coloque o valor `roles` no campo `Token Claim Name` e verifique se está marcado `On` para adicionar no token;
* Na aba `Scope`, coloque `Off` na chave `Full scope allowed` e adicione as roles que criou anteriormente.## Configurações da aplicação
No arquivo `appsettings.json`, informe os valores para `{RealmName}`, `{Audience}` e `{PublicKey}`.Nos `controllers`, configure as roles criadas.