Stratara.Identity.AspNetCore
3.1.2
See the version list below for details.
dotnet add package Stratara.Identity.AspNetCore --version 3.1.2
NuGet\Install-Package Stratara.Identity.AspNetCore -Version 3.1.2
<PackageReference Include="Stratara.Identity.AspNetCore" Version="3.1.2" />
<PackageVersion Include="Stratara.Identity.AspNetCore" Version="3.1.2" />
<PackageReference Include="Stratara.Identity.AspNetCore" />
paket add Stratara.Identity.AspNetCore --version 3.1.2
#r "nuget: Stratara.Identity.AspNetCore, 3.1.2"
#:package Stratara.Identity.AspNetCore@3.1.2
#addin nuget:?package=Stratara.Identity.AspNetCore&version=3.1.2
#tool nuget:?package=Stratara.Identity.AspNetCore&version=3.1.2
Stratara.Identity.AspNetCore
License: FSL-1.1-MIT (Functional Source License — source-available; converts to MIT after 2 years). Not OSI-approved OSS.
Channel-agnostic ASP.NET Core identity wiring for the Stratara stack. Provides the AddAspNetIdentity / AddAspNetIdentityWithSignInManager extension methods and an IStrataraSignInManager wrapper around the ASP.NET Core SignInManager. Channel-specific glue (Blazor Server's AuthenticationStateProvider, MAUI session-state forwarders, etc.) is the consumer's responsibility — Stratara intentionally stops at the ASP.NET-Core-generic surface to stay application-agnostic.
What's in the box
| Folder | Contents |
|---|---|
DependencyInjection/AspCoreIdentityServiceCollectionExtensions |
AddAspNetIdentity<TUser, TIdentityDbContext>() (Stratara password/lockout/schema-v3/passkey defaults), AddAspNetIdentityWithSignInManager<TUser, TIdentityDbContext>() (same + AspNetSignInManager + localization), AddDevelopmentNoOpEmailSender<TUser>() (dev-only, throws in Production) |
Services/AspNetSignInManager<TUser> |
Wraps SignInManager<TUser> + UserManager<TUser> and produces StrataraSignInResult with already-localized failure messages |
Services/IdentityNoOpEmailSender<TUser> |
Development-time email sender that drops every email (Task.CompletedTask); replace in production |
Resources/IdentityResources |
Resource-anchor for sign-in failure messages. English default ships in IdentityResources.resx; IdentityResources.de.resx provides German overrides. AddAspNetIdentityWithSignInManager calls AddLocalization() so IStringLocalizer<IdentityResources> resolves automatically. |
Localization
AspNetSignInManager resolves its five user-facing failure messages (Identity.SignIn.Lockout, NotAllowed, InvalidCredentials, InvalidTwoFactor, InvalidRecoveryCode) via IStringLocalizer<IdentityResources>. Languages out of the box: English (default) and German (de). To add another culture, ship a satellite .resx (e.g. IdentityResources.fr.resx) in your own assembly and register a chained IStringLocalizer<IdentityResources> if needed. Selection follows CultureInfo.CurrentUICulture — wire up app.UseRequestLocalization(...) to map this from the request.
Quick start
// Channel-agnostic ASP.NET Core host (MVC, Razor Pages, Minimal API, ...):
builder.AddAspNetIdentityWithSignInManager<ApplicationUser, IdentityDbContext>();
// Or for a host without sign-in manager (e.g. a worker that only needs identity stores):
builder.AddAspNetIdentity<ApplicationUser, IdentityDbContext>();
For Blazor Server hosts, additionally register your own IStrataraAuthenticationStateProvider implementation (and the AuthenticationStateProvider forwarder). Stratara does not ship a Blazor-specific provider — the previous BlazorAuthenticationStateProvider lived here in 1.x but moved out in v2.0.0 to keep this package application-agnostic.
Dependencies
Stratara.Identity.Core— channel-agnostic abstractions (IStrataraSignInManager,IStrataraAuthenticationStateProvider) + shared model records.Stratara.Shared— multitenancy + session-context types.Microsoft.AspNetCore.App— shared framework reference forSignInManager,IEmailSender<TUser>, etc.Microsoft.AspNetCore.Identity.EntityFrameworkCore— ASP.NET Identity stores.Microsoft.IdentityModel.JsonWebTokens,System.IdentityModel.Tokens.Jwt— JWT helpers for token-based flows.
| 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
- Microsoft.AspNetCore.Identity.EntityFrameworkCore (>= 10.0.8)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- Stratara.Identity.Core (>= 3.1.2)
- Stratara.Shared (>= 3.1.2)
- System.IdentityModel.Tokens.Jwt (>= 8.18.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
### Added
- **New package `Stratara.Testing`** — test doubles and assertion helpers so consumers can
unit-test Stratara-based code without Postgres or RabbitMQ testcontainers. Reference it from
test projects only.
- `AggregateTestHarness<T>` + `Aggregate.Rehydrate<T>(...)` — given/when/then rehydration of an
aggregate from events using the same reflection-based `Apply(...)` dispatch as the production
aggregation service. It throws on an event with no matching `Apply` overload so a forgotten or
mistyped overload fails the test; opt back into the production-lenient skip with
`IgnoringUnmappedEvents()`.
- `InMemoryKeyStore` — an `IKeyStore` that mints random 256-bit DEKs per `KeyScope` and supports
rotation / revocation / scope-erasure without a master KEK or key file.
- `TestBlobEncryptor.CreateAesGcm()` — the real AES-GCM `ISecureBlobEncryptor` over an
`InMemoryKeyStore`, so blob round-trips exercise production encryption.
- `InMemoryMessageBus` — an `IMessageBus` with synchronous in-process dispatch and a `Published`
list for assertions.
- `TestSessionContext` / `TestSessionContextProvider` — preset Actor/Subject `SessionContext`
values and an `ISessionContextProvider` double.
- `TestTenants.Of("acme")` — stable, deterministic tenant/user ids from readable slugs.
`TestSessionContext` sets both correlation and causation ids so the context can drive
event-store writes.
- `TestEvent.Create(payload, ...)` — wrap an event payload in `IEvent<T>` with realistic
metadata; `ProjectionTester.HandleAsync(projection, event)` — invoke a projection's private
`HandleAsync` handler directly to unit-test it against mocked repositories.
- **New package `Stratara.Testing.EntityFrameworkCore`** — spins up the **real** event-sourcing
write stack (`IEventSource`, `IAggregationService`, snapshots, the EF Core write store) against a
shared in-memory SQLite database in one call, so tests exercise production code paths without
Postgres or Docker. Reference it from test projects only.
- `EventStoreTestHost.Create(...)` — owns the SQLite connection + service provider; exposes
`ExecuteAsync(IEventSource)`, `AggregateAsync<T>(streamId)`, the preset `Session`, and the
recording `Outbox`.
- `AddStrataraTestingEventStore<TWriteDbContext>(connection, tenantId)` — the lower-level DI
extension; `StrataraTestWriteDbContext` — a ready-made concrete write context;
`RecordingEventBundleOutboxDispatcher` — captures emitted bundles for assertions.
- The lockstep family grows from 22 to 24 packable packages.