OutWit.Identity.Blazor 2.0.1

dotnet add package OutWit.Identity.Blazor --version 2.0.1
                    
NuGet\Install-Package OutWit.Identity.Blazor -Version 2.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OutWit.Identity.Blazor" Version="2.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OutWit.Identity.Blazor" Version="2.0.1" />
                    
Directory.Packages.props
<PackageReference Include="OutWit.Identity.Blazor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OutWit.Identity.Blazor --version 2.0.1
                    
#r "nuget: OutWit.Identity.Blazor, 2.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OutWit.Identity.Blazor@2.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OutWit.Identity.Blazor&version=2.0.1
                    
Install as a Cake Addin
#tool nuget:?package=OutWit.Identity.Blazor&version=2.0.1
                    
Install as a Cake Tool

OutWit.Identity.Blazor

Blazor WebAssembly auth-side bits for apps integrated with WitIdentity.

This package sits on top of the generic OutWit.Shared.Blazor.Shell admin shell and adds the WitIdentity-specific parts: OIDC login UI, tenant manifest types, and a thin shell-layout wrapper that pre-fills branding from /branding.json.

Renamed from OutWit.Identity.Shared in 2.0. The generic shell pieces (AppShellLayout, theme, M3 CSS, AppNotFound, DisplayUtils, LoginMenuItem) now live in OutWit.Shared.Blazor.Shell so non-Identity products can use them without pulling WitIdentity in.

Contents

  • IdentityShellLayout — thin wrapper around the generic AppShellLayout that hydrates Title, Header, LogoUrl… from the injected BrandingOptions and slots in <LoginDisplay /> + <AppShellFooter />. Use this from your MainLayout.razor and you only have to supply navigation items.
  • AppRoot — root component with CascadingAuthenticationState, Router, and AuthorizeRouteView.
  • LoginDisplay — login / logout button with user avatar + dropdown menu populated from LoginDisplayOptions.MenuItems (the LoginMenuItem record itself lives in OutWit.Shared.Blazor.Shell.Model).
  • LoginRedirect — sends unauthorised users through the OIDC login flow.
  • AppShellFooter — pinned bottom-right server version + environment badge.
  • Branding namespaceBrandingOptions, IOidcClientSettings, OidcClientSettings, SystemInfo, TenantManifest (the wire types that match the server's GET /branding.json response).
  • CSS at _content/OutWit.Identity.Blazor/css/m3-auth.css (login / change-password page styling) and app-shell-footer.css (version badge).

Installation

dotnet add package OutWit.Identity.Blazor

This transitively brings in OutWit.Shared.Blazor.Shell, MudBlazor, and the OIDC authentication libraries.

Usage

In your Blazor WASM Program.cs:

// Fetch the tenant manifest (branding + OIDC client config + server version)
// from the WitIdentity host. Registers BrandingOptions and IOidcClientSettings
// as singletons available via DI throughout the app.
var manifest = await builder.Services.AddIdentityShellTenant(builder.HostEnvironment.BaseAddress);

// Wire up OIDC authentication using values from the manifest. Pass
// `fallbackAuthority` for self-hosted scenarios where the manifest's
// Authority is empty (the identity server itself loading its admin UI).
builder.Services.AddIdentityShellAuth(manifest.Oidc);

// MudBlazor services + login menu.
builder.Services.AddIdentityShellServices(options =>
{
    options.MenuItems.Add(new LoginMenuItem("Home", "/", Icons.Material.Outlined.Home));
});

In index.html:


<link rel="stylesheet" href="_content/OutWit.Shared.Blazor.Shell/css/m3-tokens.css" />
<link rel="stylesheet" href="_content/OutWit.Shared.Blazor.Shell/css/m3-appbar.css" />
<link rel="stylesheet" href="_content/OutWit.Shared.Blazor.Shell/css/m3-nav.css" />
<link rel="stylesheet" href="_content/OutWit.Shared.Blazor.Shell/css/shell.css" />

<link rel="stylesheet" href="_content/OutWit.Identity.Blazor/css/m3-auth.css" />
<link rel="stylesheet" href="_content/OutWit.Identity.Blazor/css/app-shell-footer.css" />

<link rel="stylesheet" href="_content/MudBlazor.FontIcons.MaterialSymbols/css/font.min.css" />

In MainLayout.razor:

@inherits LayoutComponentBase

<IdentityShellLayout>
    <NavigationItems>
        <MudNavLink Href="/" Icon="@Icons.Material.Outlined.Dashboard">Home</MudNavLink>
    </NavigationItems>
    <ChildContent>@Body</ChildContent>
</IdentityShellLayout>

The WitIdentity server publishes the manifest at GET /branding.json (anonymous, Cache-Control: no-cache, must-revalidate). The shape matches the TenantManifest class in this package, so consuming apps deserialise straight into it.

Built with MudBlazor.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2.0.1 94 5/15/2026
0.0.0-alpha.0 46 5/15/2026