Keycloak.AuthServices.Authentication
1.0.2
Prefix Reserved
See the version list below for details.
dotnet add package Keycloak.AuthServices.Authentication --version 1.0.2
NuGet\Install-Package Keycloak.AuthServices.Authentication -Version 1.0.2
<PackageReference Include="Keycloak.AuthServices.Authentication" Version="1.0.2" />
<PackageVersion Include="Keycloak.AuthServices.Authentication" Version="1.0.2" />
<PackageReference Include="Keycloak.AuthServices.Authentication" />
paket add Keycloak.AuthServices.Authentication --version 1.0.2
#r "nuget: Keycloak.AuthServices.Authentication, 1.0.2"
#:package Keycloak.AuthServices.Authentication@1.0.2
#addin nuget:?package=Keycloak.AuthServices.Authentication&version=1.0.2
#tool nuget:?package=Keycloak.AuthServices.Authentication&version=1.0.2
Keycloak.AuthServices
Easy Authentication and Authorization with Keycloak in .NET and ASP.NET Core.
Example
Demonstrates how to add JWT-based authentication and custom authorization policy.
var builder = WebApplication.CreateBuilder(args);
var host = builder.Host;
var configuration = builder.Configuration;
var services = builder.Services;
host.ConfigureKeycloakConfigurationSource();
// conventional registration from keycloak.json
services.AddKeycloakAuthentication(configuration);
services.AddAuthorization(options =>
{
options.AddPolicy("RequireWorkspaces", builder =>
{
builder.RequireProtectedResource("workspaces", "workspaces:read") // HTTP request to Keycloak to check protected resource
.RequireRealmRoles("User") // Realm role is fetched from token
.RequireResourceRoles("Admin"); // Resource/Client role is fetched from token
});
})
.AddKeycloakAuthorization(configuration);
var app = builder.Build();
app.UseAuthentication()
.UseAuthorization();
app.MapGet("/workspaces", () => "[]")
.RequireAuthorization("RequireWorkspaces");
app.Run();
Keycloak.AuthServices.Authentication
Keycloak.AuthServices.Authentication
Add OpenID Connect + JWT Bearer token authentication.
// add configuration from keycloak file
host.ConfigureKeycloakConfigurationSource("keycloak.json");
// add authentication services, OICD JwtBearerDefaults.AuthenticationScheme
services.AddKeycloakAuthentication(configuration, o =>
{
o.RequireHttpsMetadata = false;
});
Client roles are automatically transformed into user role claims KeycloakRolesClaimsTransformation.
See Keycloak.AuthServices.Authentication - README.md
Keycloak installation file:
// confidential client
{
"realm": "<realm>",
"auth-server-url": "http://localhost:8088/auth/",
"ssl-required": "external", // external | none
"resource": "<clientId>",
"verify-token-audience": true,
"credentials": {
"secret": ""
}
}
// public client
{
"realm": "<realm>",
"auth-server-url": "http://localhost:8088/auth/",
"ssl-required": "external",
"resource": "<clientId>",
"public-client": true,
"confidential-port": 0
}
Keycloak.AuthServices.Authorization
Keycloak.AuthServices.Authorization
services.AddAuthorization(authOptions =>
{
authOptions.AddPolicy("<policyName>", policyBuilder =>
{
// configure policies here
});
}).AddKeycloakAuthorization(configuration);
See Keycloak.AuthServices.Authorization - README.md
Keycloak.AuthServices.Sdk
Keycloak API clients.
| Service | Description |
|---|---|
| IKeycloakClient | Unified HTTP client - IKeycloakRealmClient, IKeycloakProtectedResourceClient |
| IKeycloakRealmClient | Keycloak realm API |
| IKeycloakProtectedResourceClient | Protected resource API |
| IKeycloakProtectionClient | Authorization server API, used by AddKeycloakAuthorization |
// requires confidential client
services.AddKeycloakAdminHttpClient(keycloakOptions);
// based on token forwarding HttpClient middleware and IHttpContextAccessor
services.AddKeycloakProtectionHttpClient(keycloakOptions);
See Keycloak.AuthServices.Sdk - README.md
Build and Development
dotnet cake --target build
dotnet pack -o ./Artefacts
Reference
- https://github.com/thinktecture-labs/webinar-keycloak
- https://github.com/thinktecture-labs/webinar-keycloak-authorization
- https://github.com/elmankross/Jboss.AspNetCore.Authentication.Keycloak/
- https://github.com/mikemir/AspNetCore.KeycloakAuthentication/
- https://github.com/lvermeulen/Keycloak.Net
- https://github.com/keycloak/keycloak-documentation/blob/main/authorization_services/topics/service-authorization-uma-authz-process.adoc
- https://www.keycloak.org/docs/latest/authorization_services/index.html
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
-
net6.0
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 6.0.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
NuGet packages (20)
Showing the top 5 NuGet packages that depend on Keycloak.AuthServices.Authentication:
| Package | Downloads |
|---|---|
|
Gathrr.Framework.Infrastructure
Package Description |
|
|
Feijuca.Auth
Feijuca.Auth simplifies Keycloak integration for user management and multi-tenancy. It features TokenManager for centralized API calls to manage users and auth services for handling multiple tenants using Keycloak realms. Check the documentation for more details! |
|
|
Wcz.Layout
Package Description |
|
|
Iskra.Core.Auth
Настройка авторизации в Keycloak. |
|
|
Manjalabs.Library
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Keycloak.AuthServices.Authentication:
| Repository | Stars |
|---|---|
|
mehmetozkaya/EshopModularMonoliths
Modular Monoliths on .NET used ASP.NET Web API, Docker, PostgreSQL, Redis, RabbitMQ, Keycloak, Seq, MassTransit, Entity Framework Core, CQRS, MediatR, DDD, Vertical Slice Architecture and Outbox pattern implementation with using latest features of .NET 8 and C# 12
|
| Version | Downloads | Last Updated |
|---|---|---|
| 2.7.0 | 56,203 | 9/4/2025 |
| 2.6.1 | 244,215 | 3/13/2025 |
| 2.6.0 | 240,747 | 11/30/2024 |
| 2.5.3 | 419,296 | 8/19/2024 |
| 2.5.2 | 192,811 | 6/15/2024 |
| 2.5.1 | 21,721 | 6/11/2024 |
| 2.5.0 | 20,117 | 6/2/2024 |
| 2.4.1 | 32,951 | 5/16/2024 |
| 2.4.0 | 4,410 | 5/12/2024 |
| 2.3.0 | 859 | 5/10/2024 |
| 2.3.0-pre-1 | 164 | 5/9/2024 |
| 2.2.1 | 1,479 | 5/9/2024 |
| 2.2.0 | 1,518 | 5/8/2024 |
| 2.1.0 | 5,507 | 5/7/2024 |
| 2.0.0 | 7,883 | 5/5/2024 |
| 2.0.0-pre-4 | 192 | 5/4/2024 |
| 2.0.0-pre-3 | 257 | 4/26/2024 |
| 2.0.0-pre-2 | 200 | 4/25/2024 |
| 2.0.0-pre-1 | 461 | 4/24/2024 |
| 1.6.0 | 499,347 | 10/25/2023 |
| 1.5.2 | 343,778 | 5/27/2023 |
| 1.5.1 | 191,515 | 1/17/2023 |
| 1.5.0 | 726 | 1/17/2023 |
| 1.4.1 | 5,688 | 1/12/2023 |
| 1.4.0 | 5,542 | 1/4/2023 |
| 1.3.0 | 4,934 | 12/28/2022 |
| 1.2.1 | 104,838 | 9/22/2022 |
| 1.2.0 | 6,815 | 8/24/2022 |
| 1.1.0 | 13,399 | 1/30/2022 |
| 1.0.5 | 213 | 1/29/2022 |
| 1.0.4 | 3,460 | 1/28/2022 |
| 1.0.3 | 166 | 1/28/2022 |
| 1.0.2 | 159 | 1/23/2022 |
| 1.0.1 | 842 | 1/19/2022 |
| 1.0.0 | 19,405 | 1/19/2022 |