RhbkSdk 8.6.0
dotnet add package RhbkSdk --version 8.6.0
NuGet\Install-Package RhbkSdk -Version 8.6.0
<PackageReference Include="RhbkSdk" Version="8.6.0" />
<PackageVersion Include="RhbkSdk" Version="8.6.0" />
<PackageReference Include="RhbkSdk" />
paket add RhbkSdk --version 8.6.0
#r "nuget: RhbkSdk, 8.6.0"
#:package RhbkSdk@8.6.0
#addin nuget:?package=RhbkSdk&version=8.6.0
#tool nuget:?package=RhbkSdk&version=8.6.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.6.0 | 276 | 3/1/2026 |
| 8.5.0 | 65 | 2/28/2026 |
| 8.4.0 | 61 | 2/27/2026 |
| 8.3.1 | 767 | 1/23/2026 |
| 8.3.0 | 67 | 1/23/2026 |
| 8.2.10 | 812 | 12/1/2025 |
| 8.2.9 | 792 | 11/19/2025 |
| 8.2.8 | 601 | 10/29/2025 |
| 8.2.7 | 1,302 | 6/26/2025 |
| 8.2.6 | 160 | 6/26/2025 |
| 8.2.5 | 161 | 6/26/2025 |
| 8.2.4 | 153 | 6/26/2025 |
| 8.2.3 | 189 | 6/17/2025 |
| 8.2.2 | 174 | 6/17/2025 |
| 8.2.1 | 413 | 5/15/2025 |
| 8.2.0 | 271 | 5/15/2025 |
| 8.1.0 | 254 | 5/15/2025 |