RhbkSdk 8.9.0
dotnet add package RhbkSdk --version 8.9.0
NuGet\Install-Package RhbkSdk -Version 8.9.0
<PackageReference Include="RhbkSdk" Version="8.9.0" />
<PackageVersion Include="RhbkSdk" Version="8.9.0" />
<PackageReference Include="RhbkSdk" />
paket add RhbkSdk --version 8.9.0
#r "nuget: RhbkSdk, 8.9.0"
#:package RhbkSdk@8.9.0
#addin nuget:?package=RhbkSdk&version=8.9.0
#tool nuget:?package=RhbkSdk&version=8.9.0
RhbkSdk
O RhbkSdk é um SDK para .NET 8 que facilita a integração com a API RHBK (Keycloak), oferecendo uma camada de abstração moderna com suporte a grupos, papéis, autenticação e gerenciamento de usuários.
📦 Injeção de Dependência
Registre o SDK no seu Program.cs:
using RhbkSdk.Extensions;
builder.AddRhbkClient("https://seu.keycloak.url", ServiceLifetime.Scoped);
⚙️ Configuração por appsettings
Recomendado usar a classe RhbkConfiguration:
"RhbkConfiguration": {
"Realm": "meu-realm",
"ClientId": "client-id",
"ClientSecret": "segredo",
"KeycloakBaseUrl": "https://keycloak.meuservidor.com",
"RedirectUri": "https://meusite/callback"
}
E carregar no startup:
builder.Services.Configure<RhbkConfiguration>(
builder.Configuration.GetSection(RhbkConfiguration.ConfigurationSection));
📘 Como Usar
Você injeta a interface IRhbkClient diretamente:
public class MeuServico
{
private readonly IRhbkClient _rhbkClient;
public MeuServico(IRhbkClient rhbkClient)
{
_rhbkClient = rhbkClient;
}
public async Task<IList<UserResponse>> BuscarUsuarios()
{
var token = await _rhbkClient.GetTokenAsync("realm", new GetTokenRequestBody { ... });
var usuarios = await _rhbkClient.GetUsersAsync(token.Data?.AccessToken!, "realm");
return usuarios.Data ?? [];
}
}
🧪 Retorno Padrão
Todas as chamadas assíncronas retornam:
DefaultResponseBody<T>
Esse objeto inclui:
StatusCode: código HTTP da operaçãoData: resultado da chamada, que pode ser nulo
📂 Models disponíveis
AccessClientResponseGroupResponseUserResponseRoleResponseRoleGroupMappingGetTokenResponseBodyGroupCreateRequestBodyGroupUpdateRequestBodyClientRoleRequestBodyGroupRoleManagementRequestBodyRhbkConfiguration
✅ Funcionalidades
🔐 Autenticação
GetTokenAsyncGetLoginUrlGetLogoutUrlGetLoginProviderUrl
👥 Grupos
- Criar grupos e subgrupos
- Editar grupo
- Habilitar/desabilitar grupo com backup/restore de roles
- Buscar todos os grupos ou subgrupos
- Buscar membros
- Adicionar/remover papéis de grupos
- Deletar grupos
Exemplo de edição de grupo:
await _rhbkClient.EditGroupAsync(
token: accessToken,
realm: "meu-realm",
groupId: groupId,
body: new GroupUpdateRequestBody
{
Name = "novo-nome-do-grupo",
Attributes = new Dictionary<string, IList<string>>
{
["costCenter"] = new List<string> { "TI-01" },
["system"] = new List<string> { "rhbk-sdk" }
}
},
cancellationToken: cancellationToken);
Exemplo de desabilitar/habilitar grupo preservando roles:
await _rhbkClient.SetGroupEnabledAsync(
token: accessToken,
realm: "meu-realm",
groupId: groupId,
clientId: clientId,
enabled: false,
cancellationToken: cancellationToken);
await _rhbkClient.SetGroupEnabledAsync(
token: accessToken,
realm: "meu-realm",
groupId: groupId,
clientId: clientId,
enabled: true,
cancellationToken: cancellationToken);
🧑💼 Usuários
- Listar usuários
- Adicionar usuário a grupo
- Remover usuário de grupo
🧩 Clientes
- Buscar cliente por nome
- Gerenciar papéis do cliente
🔗 Dependências
- Refit — cliente HTTP declarativo
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Configuration
🚀 CI/CD Automatizado
Este projeto possui pipeline com GitHub Actions que:
- Compila
- Empacota o
.nupkg - Publica automaticamente no NuGet
Como publicar:
- Altere a versão no
csproj(se necessário) - Faça o commit
- Crie e envie uma tag:
git tag v8.0.2
git push origin v8.0.2
O pacote será publicado com a versão v8.0.2.
📝 Licença
Distribuído sob a licença MIT.
Consulte o arquivo LICENSE.txt para mais detalhes.
👨💻 Autor
Desenvolvido por Wallace Vidal de Figueiredo Fortuna
GitHub - wallacevff
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Configuration (>= 10.0.0-preview.4.25258.110)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Refit (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.9.0 | 117 | 6/10/2026 |
| 8.8.1 | 327 | 6/2/2026 |
| 8.7.0 | 64 | 6/1/2026 |
| 8.6.0 | 1,406 | 3/1/2026 |
| 8.5.0 | 75 | 2/28/2026 |
| 8.4.0 | 74 | 2/27/2026 |
| 8.3.1 | 838 | 1/23/2026 |
| 8.3.0 | 78 | 1/23/2026 |
| 8.2.10 | 823 | 12/1/2025 |
| 8.2.9 | 808 | 11/19/2025 |
| 8.2.8 | 613 | 10/29/2025 |
| 8.2.7 | 1,311 | 6/26/2025 |
| 8.2.6 | 170 | 6/26/2025 |
| 8.2.5 | 171 | 6/26/2025 |
| 8.2.4 | 162 | 6/26/2025 |
| 8.2.3 | 202 | 6/17/2025 |
| 8.2.2 | 184 | 6/17/2025 |
| 8.2.1 | 424 | 5/15/2025 |
| 8.2.0 | 282 | 5/15/2025 |
| 8.1.0 | 264 | 5/15/2025 |