Authagonal.Migration
0.29.0
dotnet add package Authagonal.Migration --version 0.29.0
NuGet\Install-Package Authagonal.Migration -Version 0.29.0
<PackageReference Include="Authagonal.Migration" Version="0.29.0" />
<PackageVersion Include="Authagonal.Migration" Version="0.29.0" />
<PackageReference Include="Authagonal.Migration" />
paket add Authagonal.Migration --version 0.29.0
#r "nuget: Authagonal.Migration, 0.29.0"
#:package Authagonal.Migration@0.29.0
#addin nuget:?package=Authagonal.Migration&version=0.29.0
#tool nuget:?package=Authagonal.Migration&version=0.29.0
Authagonal.Migration
One-time migration from Duende IdentityServer (SQL Server) into Authagonal's stores.
Ships three things:
DuendeMigrationEngine— reads a DuendeConfigurationDb/IdentityDband writes users, external logins, roles, scopes, clients, API-resource flattening, SAML/OIDC providers, SSO domains, MFA credentials, and (optionally) refresh tokens through Authagonal's store abstractions. Product-agnostic: it writes stores directly and never triggers host provisioning callbacks.DuendeMigrationHostedRunner— a leader-gatedBackgroundServicethat runs the engine exactly once per configuredVersionon deploy, without blocking startup. Wire it withservices.AddAuthagonalDuendeMigration(configuration)afterAddAuthagonal.- CLI support — the same engine drives
tools/Authagonal.Migration.Clifor local/offline runs.
Configuration (Migration section)
{
"Migration": {
"Enabled": false,
"DryRun": false,
"Version": "1",
"UsersMode": "CreateOnly",
"MigrateClients": true,
"MigrateRefreshTokens": false,
"LeaseWaitMinutes": 10,
"StartupDelaySeconds": 30,
"Source": { "ConnectionString": "Server=...;Database=...;" }
}
}
DryRunproduces the full validation report (id charset/length, duplicate emails, table/column inventory, per-pass counts) and writes nothing.Versionis the run marker's RowKey — bump it to re-run a delta sweep. Only aCompleted, non-DryRunmarker blocks a re-run.UsersMode—CreateOnly(default; skip existing) orUpsert(overwrite). NeverUpsertpost-cutover — it would clobber rehashed passwords and new MFA.
Status endpoint
GET /admin/migration/status returns the latest marker + last report, gated by the IdentityAdmin
authorization policy like the other admin endpoints.
NDJSON user import
A second, independent import source: NdjsonUserImportEngine reads a flat NDJSON file (one JSON
object per line — email required; passwordHash stored verbatim) and writes users only, through
the same IUserStore abstraction. Wired into the CLI as import-ndjson-users. See
docs/migration.md — "NDJSON user import" — for the record schema and full CLI reference.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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
- Authagonal.AzureProvider (>= 0.29.0)
- Authagonal.Core (>= 0.29.0)
- Authagonal.Server (>= 0.29.0)
- Azure.Data.Tables (>= 12.11.0)
- Microsoft.Data.SqlClient (>= 7.0.0)
-
net9.0
- Authagonal.AzureProvider (>= 0.29.0)
- Authagonal.Core (>= 0.29.0)
- Authagonal.Server (>= 0.29.0)
- Azure.Data.Tables (>= 12.11.0)
- Microsoft.Data.SqlClient (>= 7.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 |
|---|---|---|
| 0.29.0 | 0 | 9/14/2026 |
| 0.28.2 | 32 | 9/14/2026 |
| 0.28.1 | 42 | 9/14/2026 |
| 0.28.0 | 107 | 9/13/2026 |
| 0.27.1 | 53 | 9/11/2026 |
| 0.27.0 | 90 | 9/4/2026 |
| 0.26.1 | 83 | 9/4/2026 |
| 0.26.0 | 95 | 9/3/2026 |
| 0.25.10 | 83 | 9/3/2026 |
| 0.25.9 | 86 | 9/3/2026 |
| 0.25.8 | 106 | 8/23/2026 |
| 0.25.7 | 104 | 8/22/2026 |
| 0.25.6 | 86 | 8/21/2026 |
| 0.25.5 | 92 | 8/21/2026 |
| 0.25.4 | 98 | 8/21/2026 |
| 0.25.3 | 112 | 8/17/2026 |
| 0.25.2 | 105 | 8/12/2026 |
| 0.24.0 | 103 | 8/7/2026 |
| 0.23.0 | 115 | 8/5/2026 |
| 0.22.1 | 116 | 8/4/2026 |