Zemires.Aspire.Zitadel
13.6.0-preview.2
dotnet add package Zemires.Aspire.Zitadel --version 13.6.0-preview.2
NuGet\Install-Package Zemires.Aspire.Zitadel -Version 13.6.0-preview.2
<PackageReference Include="Zemires.Aspire.Zitadel" Version="13.6.0-preview.2" />
<PackageVersion Include="Zemires.Aspire.Zitadel" Version="13.6.0-preview.2" />
<PackageReference Include="Zemires.Aspire.Zitadel" />
paket add Zemires.Aspire.Zitadel --version 13.6.0-preview.2
#r "nuget: Zemires.Aspire.Zitadel, 13.6.0-preview.2"
#:package Zemires.Aspire.Zitadel@13.6.0-preview.2
#addin nuget:?package=Zemires.Aspire.Zitadel&version=13.6.0-preview.2&prerelease
#tool nuget:?package=Zemires.Aspire.Zitadel&version=13.6.0-preview.2&prerelease
Zemires.Aspire.Zitadel
An Aspire client integration that registers the Zitadel API service clients (from the Zitadel .NET SDK) and a health check in the DI container.
Install the package
dotnet add package Zemires.Aspire.Zitadel
Usage
In the AppHost, add a connection string resource with AddApiConnectionString() (holds ZitadelResource.ApiConnectionString: Endpoint=...;ServiceAccountKey=<base64 machine user key>, see Zemires.Aspire.Hosting.Zitadel):
var zitadel = builder.AddZitadel("zitadel").WithMachineUser();
var zitadelApi = zitadel.AddApiConnectionString(); // resource "zitadel-api"
builder.AddProject<Projects.AdminApp>("admin")
.WithReference(zitadelApi)
.WaitFor(zitadel); // the machine user key is written on the first start of Zitadel
WithReference(zitadel) alone provides only the endpoint (ConnectionStrings:zitadel); credentials can then be passed via configuration, e.g. Aspire__Zitadel__Client__PersonalAccessToken.
In the consuming service:
builder.AddZitadelApi("zitadel-api");
// or keyed: builder.AddKeyedZitadelApi("zitadel-api");
Then inject one of the registered service clients: AdminService.AdminServiceClient, AuthService.AuthServiceClient, ManagementService.ManagementServiceClient, UserService.UserServiceClient (v2), OrganizationService.OrganizationServiceClient (v2), SessionService.SessionServiceClient (v2), SettingsService.SettingsServiceClient (v2), OIDCService.OIDCServiceClient (v2). For other services, inject Clients.Options and create the client yourself (e.g. Clients.SystemService(options)).
app.MapGet("/users", async (UserService.UserServiceClient users) => await users.ListUsersAsync(new ListUsersRequest()));
Configuration
Settings are read from the Aspire:Zitadel:Client configuration section (Aspire:Zitadel:Client:{name} for keyed registrations):
| Setting | Description |
|---|---|
Endpoint |
Base URI of the Zitadel instance. |
PersonalAccessToken |
PAT of a machine user. |
ServiceAccountKey |
JSON key of a machine user (plain or base64 encoded JSON). |
ServiceAccountKeyPath |
Path to the JSON key file of a machine user. |
DisableHealthChecks |
Disables the health check (/healthz). |
HealthCheckTimeout |
Health check timeout in milliseconds. |
The connection string ConnectionStrings:{name} takes precedence over Endpoint. It is either the plain endpoint URL (as provided by the hosting integration) or a key/value string with Endpoint, ServiceAccountKey, ServiceAccountKeyPath and PersonalAccessToken, e.g. Endpoint=https://localhost:8501;ServiceAccountKey=eyJ0eXBlIjoi.... Without credentials, the clients are created unauthenticated and each call must pass its own token.
Feedback & contributing
| 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 is compatible. 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 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
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Http (>= 10.0.13)
- Zitadel (>= 7.0.44)
-
net8.0
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Http (>= 10.0.13)
- Zitadel (>= 7.0.44)
-
net9.0
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Http (>= 10.0.13)
- Zitadel (>= 7.0.44)
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 |
|---|---|---|
| 13.6.0-preview.2 | 78 | 10/16/2026 |
| 13.6.0-preview.1 | 50 | 10/13/2026 |