BlogDoFT.Libs.Keycloak
10.1.1
dotnet add package BlogDoFT.Libs.Keycloak --version 10.1.1
NuGet\Install-Package BlogDoFT.Libs.Keycloak -Version 10.1.1
<PackageReference Include="BlogDoFT.Libs.Keycloak" Version="10.1.1" />
<PackageVersion Include="BlogDoFT.Libs.Keycloak" Version="10.1.1" />
<PackageReference Include="BlogDoFT.Libs.Keycloak" />
paket add BlogDoFT.Libs.Keycloak --version 10.1.1
#r "nuget: BlogDoFT.Libs.Keycloak, 10.1.1"
#:package BlogDoFT.Libs.Keycloak@10.1.1
#addin nuget:?package=BlogDoFT.Libs.Keycloak&version=10.1.1
#tool nuget:?package=BlogDoFT.Libs.Keycloak&version=10.1.1
BlogDoFT.Libs.Keycloak
Client-credentials Keycloak token provider and a DelegatingHandler to attach Bearer tokens to outgoing HTTP requests. Registers IKeycloakTokenProvider (from BlogDoFT.Libs.Keycloak.Abstractions) as a typed HttpClient and caches the access token until shortly before it expires.
Purpose
- Fetch and cache an access token from Keycloak using the
client_credentialsgrant. - Provide
KeycloakAuthenticationHandler, aDelegatingHandlerthat attaches the cached token to anyHttpClientit decorates.
Configuration
{
"Keycloak": {
"TokenEndpoint": "https://keycloak.example.com/realms/demo/protocol/openid-connect/token",
"ClientId": "my-client",
"ClientSecret": "my-secret"
}
}
Quick start
// Composition root
services.AddKeycloakTokenProvider();
// or configure options in code
services.AddKeycloakTokenProvider(options =>
{
options.TokenEndpoint = "https://keycloak.example.com/realms/demo/protocol/openid-connect/token";
options.ClientId = "my-client";
options.ClientSecret = "my-secret";
});
Authenticating another HttpClient
services
.AddHttpClient("downstream-client")
.AddHttpMessageHandler<KeycloakAuthenticationHandler>();
Notes
AddKeycloakTokenProviderfails fast with anOptionsValidationExceptionwhenKeycloak:TokenEndpoint,Keycloak:ClientIdorKeycloak:ClientSecretis missing or empty.KeycloakAuthenticationHandleris registered so it can be attached to otherHttpClientregistrations (e.g. the Flagr client fromBlogDoFT.Libs.Flagr) viaAddHttpMessageHandler<KeycloakAuthenticationHandler>(); it is never automatically applied to the token-provider's own client, since fetching a token cannot depend on already having one.
Versioning
Starting with v10.0.0, this library's version numbering follows the major version of the .NET runtime it targets. For example, this version is compatible with .NET 10, so the major version is 10 — this explains the jump from the previous 1.x version series.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- BlogDoFT.Libs.Keycloak.Abstractions (>= 10.1.1)
- Microsoft.Extensions.Configuration (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.