Franz.Common.SSO
1.6.3
See the version list below for details.
dotnet add package Franz.Common.SSO --version 1.6.3
NuGet\Install-Package Franz.Common.SSO -Version 1.6.3
<PackageReference Include="Franz.Common.SSO" Version="1.6.3" />
<PackageVersion Include="Franz.Common.SSO" Version="1.6.3" />
<PackageReference Include="Franz.Common.SSO" />
paket add Franz.Common.SSO --version 1.6.3
#r "nuget: Franz.Common.SSO, 1.6.3"
#:package Franz.Common.SSO@1.6.3
#addin nuget:?package=Franz.Common.SSO&version=1.6.3
#tool nuget:?package=Franz.Common.SSO&version=1.6.3
Franz.Common.SSO
A library within the Franz Framework that provides streamlined support for Single Sign-On (SSO) in ASP.NET Core applications.
This package unifies configuration and registration of multiple SSO providers into a single, consistent bootstrapping mechanism, while normalizing all claims into a unified FranzIdentityContext
.
-Current Version: 1.6.3
Features
Centralized SSO Bootstrapping
- One entry point:
AddFranzSsoIdentity(configuration)
- Loads provider settings directly from
appsettings.json
- Ensures only one interactive provider is active unless explicitly configured
- One entry point:
Supported Providers
- WS-Federation (Azure AD classic / ADFS)
- SAML2 (via Sustainsys.Saml2)
- OpenID Connect (OIDC)
- Keycloak (via OIDC, with claims transformation)
- JWT Bearer (API token validation for microservices)
Claims Normalization
Maps provider-specific claims (Azure AD, Keycloak, SAML attributes, etc.)
Produces a unified
FranzIdentityContext
with:UserId
,Email
,FullName
Roles
TenantId
,DomainId
Structured Logging
- Bootstrapping and provider activation logged via
ILogger<T>
- Clean integration with Franz.Common.Logging / Serilog
- Bootstrapping and provider activation logged via
Configuration-Driven
- All providers enabled/disabled via config
- No hard-coded values in code
Installation
From your private Azure feed:
dotnet nuget add source "https://your-private-feed-url" \
--name "AzurePrivateFeed" \
--username "YourAzureUsername" \
--password "YourAzurePassword" \
--store-password-in-clear-text
dotnet add package Franz.Common.SSO
Usage
1. Configure appsettings.json
{
"FranzIdentity": {
"AllowMultipleInteractiveProviders": false,
"WsFederation": {
"Enabled": false,
"MetadataAddress": "https://login.microsoftonline.com/...",
"Wtrealm": "https://your-app"
},
"Saml2": {
"Enabled": false,
"IdpMetadata": "https://idp.example.com/metadata",
"EntityId": "https://your-app"
},
"Oidc": {
"Enabled": true,
"Authority": "https://login.microsoftonline.com/{tenantId}/v2.0",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret"
},
"Keycloak": {
"Enabled": false,
"Authority": "https://keycloak.example.com/realms/yourrealm",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret"
},
"Jwt": {
"Enabled": true,
"Authority": "https://login.microsoftonline.com/{tenantId}/v2.0",
"Audience": "api://your-api"
}
}
}
2. Register SSO in Program.cs
using Franz.Common.SSO.Extensions;
var builder = WebApplication.CreateBuilder(args);
// Add Franz SSO Identity
builder.Services.AddFranzSsoIdentity(builder.Configuration);
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/whoami", (IIdentityContextAccessor accessor) =>
{
var identity = accessor.GetCurrentIdentity();
return Results.Json(identity);
});
app.Run();
3. Normalized Identity Usage
var identity = _accessor.GetCurrentIdentity();
Console.WriteLine($"User: {identity.FullName}, Tenant: {identity.TenantId}, Roles: {string.Join(", ", identity.Roles)}");
Integration with Franz Framework
- Works with Franz.Common.Identity for the core identity context.
- Works with Franz.Common.Http.Identity for ASP.NET Core providers.
- Centralizes all SSO wiring into one consistent package.
Changelog
Version 1.6.2
Complete SSO overhaul
- Removed legacy
GenericSSOManager
/GenericSSOProvider
- Introduced
FranzSsoSettings
for unified config binding - Added
AddFranzSsoIdentity()
bootstrap extension - Integrated WS-Fed, SAML2, OIDC, Keycloak, JWT Bearer providers
- Added claims normalization pipeline to
FranzIdentityContext
- Added structured startup logging via
FranzSsoStartupFilter
- Removed legacy
Version 1.3
- Upgraded to .NET 9.0.8
- Added new features and improvements
- Separated business concepts from mediator concepts
- Now compatible with both the in-house mediator and MediatR
Version 1.2.65
- Added
ISsoProvider
for custom SSO provider implementation - Introduced
GenericSSOProvider
andGenericSSOManager
for generic workflows - Integrated with ASP.NET Core Identity and EF Core
- Provided
SsoServiceRegistration
for streamlined configuration
⚡ With v1.6.2, Franz.Common.SSO is now a unified, production-ready SSO abstraction for all supported protocols.
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 was computed. 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. |
-
net9.0
- Franz.Common.EntityFramework (>= 1.6.3)
- Franz.Common.Http.Identity (>= 1.6.3)
- Franz.Common.Logging (>= 1.6.3)
- Microsoft.AspNetCore.Identity (>= 2.3.1)
- Microsoft.AspNetCore.Identity.EntityFrameworkCore (>= 9.0.8)
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 |
---|---|---|
1.6.14 | 106 | 10/15/2025 |
1.6.3 | 150 | 10/9/2025 |
1.6.2 | 155 | 10/7/2025 |
1.5.9 | 166 | 9/24/2025 |
1.5.4 | 160 | 9/23/2025 |
1.5.3 | 215 | 9/21/2025 |
1.5.2 | 208 | 9/21/2025 |
1.5.0 | 200 | 9/21/2025 |
1.4.4 | 189 | 9/20/2025 |
1.3.14 | 293 | 9/18/2025 |
1.3.13 | 290 | 9/18/2025 |
1.3.5 | 293 | 9/17/2025 |
1.3.4 | 281 | 9/16/2025 |
1.3.3 | 281 | 9/16/2025 |
1.3.2 | 277 | 9/15/2025 |
1.3.1 | 113 | 9/12/2025 |
1.3.0 | 291 | 8/25/2025 |
1.2.65 | 180 | 3/3/2025 |
1.2.64 | 141 | 1/29/2025 |
1.2.63 | 124 | 1/27/2025 |
1.2.62 | 121 | 1/8/2025 |