Franz.Common.SSO
1.6.15
See the version list below for details.
dotnet add package Franz.Common.SSO --version 1.6.15
NuGet\Install-Package Franz.Common.SSO -Version 1.6.15
<PackageReference Include="Franz.Common.SSO" Version="1.6.15" />
<PackageVersion Include="Franz.Common.SSO" Version="1.6.15" />
<PackageReference Include="Franz.Common.SSO" />
paket add Franz.Common.SSO --version 1.6.15
#r "nuget: Franz.Common.SSO, 1.6.15"
#:package Franz.Common.SSO@1.6.15
#addin nuget:?package=Franz.Common.SSO&version=1.6.15
#tool nuget:?package=Franz.Common.SSO&version=1.6.15
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.15
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
FranzIdentityContextwith:UserId,Email,FullNameRolesTenantId,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
FranzSsoSettingsfor 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
ISsoProviderfor custom SSO provider implementation - Introduced
GenericSSOProviderandGenericSSOManagerfor generic workflows - Integrated with ASP.NET Core Identity and EF Core
- Provided
SsoServiceRegistrationfor 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.15)
- Franz.Common.Http.Identity (>= 1.6.15)
- Franz.Common.Logging (>= 1.6.15)
- 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.21 | 166 | 11/27/2025 |
| 1.6.20 | 172 | 11/24/2025 |
| 1.6.19 | 130 | 10/25/2025 |
| 1.6.15 | 163 | 10/20/2025 |
| 1.6.14 | 162 | 10/15/2025 |
| 1.6.3 | 164 | 10/9/2025 |
| 1.6.2 | 169 | 10/7/2025 |
| 1.5.9 | 172 | 9/24/2025 |
| 1.5.4 | 169 | 9/23/2025 |
| 1.5.3 | 225 | 9/21/2025 |
| 1.5.2 | 215 | 9/21/2025 |
| 1.5.0 | 206 | 9/21/2025 |
| 1.4.4 | 198 | 9/20/2025 |
| 1.3.14 | 302 | 9/18/2025 |
| 1.3.13 | 302 | 9/18/2025 |
| 1.3.5 | 305 | 9/17/2025 |
| 1.3.4 | 300 | 9/16/2025 |
| 1.3.3 | 302 | 9/16/2025 |
| 1.3.2 | 295 | 9/15/2025 |
| 1.3.1 | 129 | 9/12/2025 |
| 1.3.0 | 308 | 8/25/2025 |
| 1.2.65 | 188 | 3/3/2025 |
| 1.2.64 | 145 | 1/29/2025 |
| 1.2.63 | 130 | 1/27/2025 |
| 1.2.62 | 127 | 1/8/2025 |