JeffOps.Authentication.Bff 0.2.0-alpha

Prefix Reserved
This is a prerelease version of JeffOps.Authentication.Bff.
dotnet add package JeffOps.Authentication.Bff --version 0.2.0-alpha
                    
NuGet\Install-Package JeffOps.Authentication.Bff -Version 0.2.0-alpha
                    
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="JeffOps.Authentication.Bff" Version="0.2.0-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JeffOps.Authentication.Bff" Version="0.2.0-alpha" />
                    
Directory.Packages.props
<PackageReference Include="JeffOps.Authentication.Bff" />
                    
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 JeffOps.Authentication.Bff --version 0.2.0-alpha
                    
#r "nuget: JeffOps.Authentication.Bff, 0.2.0-alpha"
                    
#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 JeffOps.Authentication.Bff@0.2.0-alpha
                    
#: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=JeffOps.Authentication.Bff&version=0.2.0-alpha&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=JeffOps.Authentication.Bff&version=0.2.0-alpha&prerelease
                    
Install as a Cake Tool

JeffOps.Authentication

Reusable authentication and authorization libraries for multi-tenant .NET 10 applications. It has three parts:

  • an OpenID Connect token server built on OpenIddict
  • permission-based authorization evaluated locally in each service
  • client libraries for SPAs (through a BFF), web apps, native apps, CLIs and services

Status: pre-release. All roadmap phases are implemented and tested, but nothing is published to NuGet yet and the public API may still change.

What's in it

  • Token server: authorization code + PKCE, refresh with live revalidation, client credentials, personal access tokens, userinfo, end-session, back-channel logout, PAR, device flow, private_key_jwt, DPoP, workload identity federation; signing keys in the database or Azure Key Vault.
  • Sign-in: any OpenID Connect provider, Microsoft Entra, SAML 2.0, and local accounts (passwords, TOTP, recovery codes, passkeys, lockout, verification, reset), with a hosted login UI.
  • Enterprise: DNS-verified tenant domains, per-tenant SSO and SSO-only, SCIM 2.0 provisioning of users and groups.
  • Delegation: impersonation with the target's approval (and break-glass), lockbox tenant access, tenant switch.
  • Authorization: permissions with wildcards, scopes, roles, attribute policies, ceilings (PAT, delegation, step-up, impersonation), and management with four-eyes approval, break-glass, recertification, group role assignments.
  • Clients: JWT validation for resource services (with DPoP), service tokens, and a backend-for-frontend with YARP, including acting sessions for impersonation and tenant switch.

Getting started

docs/getting-started.md walks through a token server, an API with permissions, a SPA behind the BFF and service-to-service calls, with the configuration for each.

Design

Everything is in docs/DESIGN.md: the goals, architecture, package map, security baseline, decisions and roadmap.

Key rules:

  • Clean Architecture + vertical slices + minimal APIs. Code is organised by use case. Endpoints call handlers directly, with no mediator library.
  • Free, permissive dependencies only (MIT, Apache-2.0, BSD). BannedPackages.txt lists banned packages, and the build fails if a project references one.
  • Architecture tests enforce the dependency rules, slice isolation, handler registration and the package policy.

Build and test

Requires the .NET 10 SDK. global.json pins the SDK version and selects Microsoft.Testing.Platform as the test runner.

dotnet build JeffOps.Authentication.slnx -c Release
dotnet test --solution JeffOps.Authentication.slnx -c Release

Release builds are strict: warnings are errors, analyzers and code style are enforced, and transitive NuGet audit is on. Debug builds skip analyzers so local builds are faster.

Layout

src/
  Shared/           SharedKernel, Abstractions
  Authentication/   Domain, Application, Infrastructure, Persistence.SqlServer, Endpoints, UI
    Plugins/        KeyVault, Federation.Entra, Federation.Oidc, Federation.Saml
    Modules/        LocalAccounts, Delegation, Enterprise (each with a .SqlServer package)
  Authorization/    Domain, Application, Infrastructure, Persistence.SqlServer, Endpoints, AspNetCore
  Clients/          Client, Bff, Bff.Yarp
  Common/           Security.AspNetCore, Entitlements, Testing
tests/              one test project per src project, plus Architecture.Tests

Licence

Apache-2.0.

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 (1)

Showing the top 1 NuGet packages that depend on JeffOps.Authentication.Bff:

Package Downloads
JeffOps.Authentication.Bff.Yarp

YARP integration for the JeffOps BFF: cookie stripping, bearer forwarding, PAT exchange at the edge.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0-alpha 62 10/20/2026
0.1.0-alpha 62 10/20/2026