Umbraco.Community.AzureSSO
3.3.0
dotnet add package Umbraco.Community.AzureSSO --version 3.3.0
NuGet\Install-Package Umbraco.Community.AzureSSO -Version 3.3.0
<PackageReference Include="Umbraco.Community.AzureSSO" Version="3.3.0" />
<PackageVersion Include="Umbraco.Community.AzureSSO" Version="3.3.0" />
<PackageReference Include="Umbraco.Community.AzureSSO" />
paket add Umbraco.Community.AzureSSO --version 3.3.0
#r "nuget: Umbraco.Community.AzureSSO, 3.3.0"
#:package Umbraco.Community.AzureSSO@3.3.0
#addin nuget:?package=Umbraco.Community.AzureSSO&version=3.3.0
#tool nuget:?package=Umbraco.Community.AzureSSO&version=3.3.0
Umbraco.Community.AzureSSO
Add Azure Entra ID SSO to Umbraco v10+ sites. This will allow you to automatically create Umbraco user accounts for users in your Microsoft Entra ID tenant. This will then associate the Umbraco users with groups based on their group, and the configuration below.
First you, or an Entra ID administrator will need to create an App Registration in the Azure Portal which will be used to authenticate the site against Azure AD. Follow these instructions to setup the new App Registration
To install:
dotnet add package Umbraco.Community.AzureSSO
Setup
Select the instructions for your Umbraco version
Local development
To spin up a local Umbraco site for manually testing changes to this package, run one of the demo site scripts from the repo root:
./scripts/install-demo-site.ps1 # Windows/PowerShell
./scripts/install-demo-site.sh # macOS/Linux/bash
This scaffolds a new Umbraco site under demo/, references it against the Umbraco.Community.AzureSSO project in src/ (so your local changes are picked up directly, no need to pack/publish), and creates Umbraco.Community.AzureSSO.local.slnx combining both projects for convenience. The AzureSSO configuration section is added to the demo site's appsettings.Development.json disabled by default, with placeholder REPLACE_WITH_* values.
To use it:
- Follow EntraIDSetup.md to create an App Registration in Azure
- Fill in the
AzureSSO.Credentialsvalues indemo/Umbraco.Community.AzureSSO.DemoSite/appsettings.Development.json - Set
AzureSSO.Enabledtotrue - Open
Umbraco.Community.AzureSSO.local.slnx, build, and run theUmbraco.Community.AzureSSO.DemoSiteproject
Both scripts accept -Force/--force to recreate the demo site from scratch, and -SkipTemplateInstall/--skip-template-install to skip reinstalling the Umbraco templates on repeat runs. The demo site and local solution file are gitignored.
Advanced usage
Manually composing
If you'd like to disable the composer and configure it yourself you can add DisableComposer to the settings and set it's value to true
i.e.
"AzureSSO": {
/// All the other configuration
"DisableComposer": true
}
In which case you'll need to add AddMicrosoftAccountAuthentication() to your ConfigureServices function
Managed Identity / Workload Identity
By default the package authenticates against the App Registration using a client secret. Alternatively you can authenticate using an Azure Managed Identity, a Workload Identity (federated credentials, e.g. on AKS) or a certificate, which removes the need to store a client secret, by setting CredentialType in the Credentials section:
"AzureSSO": {
"Credentials": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "<domain>",
"TenantId": "<tenantId>",
"ClientId": "<clientId>",
"CallbackPath": "/umbraco-microsoft-signin/",
"SignedOutCallbackPath": "/umbraco-microsoft-signout/",
"CredentialType": "ManagedIdentity"
},
/// All the other configuration
}
| Setting | Description |
|---|---|
| CredentialType | How the application authenticates to Entra ID: Secret (the default, uses ClientSecret), ManagedIdentity, WorkloadIdentity or Certificate |
| ManagedIdentityClientId | Only used when CredentialType is ManagedIdentity. Set to the client ID of a user-assigned managed identity, or leave empty to use the system-assigned managed identity |
| CertificateThumbprint | Only used when CredentialType is Certificate. The thumbprint of the certificate to use |
| CertificateStorePath | Only used when CredentialType is Certificate. The certificate store to load the certificate from, in StoreLocation/StoreName format. Defaults to CurrentUser/My |
When CredentialType is ManagedIdentity, WorkloadIdentity or Certificate, ClientSecret is not required and is ignored.
Managed Identity
The managed identity is used as a federated identity credential for the App Registration, so the App Registration must be configured to trust it — see Configure an application to trust a managed identity. For a user-assigned managed identity set ManagedIdentityClientId to the identity's client ID; for a system-assigned managed identity leave it empty.
Workload Identity
Workload identity authenticates using the federated token file issued by the Azure Workload Identity webhook. The AZURE_FEDERATED_TOKEN_FILE environment variable must be set — on AKS this means the workload identity webhook is enabled and the pod has the azure.workload.identity/use: "true" label. The App Registration needs a federated credential trusting the Kubernetes service account, and TenantId and ClientId must be set explicitly in the configuration. If the environment variable is missing the site will throw an error on startup.
Certificate
The certificate must be uploaded to the App Registration (Certificates & secrets) and installed in a certificate store the application can read, identified by CertificateThumbprint. CertificateStorePath selects which store to load it from (e.g. CurrentUser/My or LocalMachine/My) and defaults to CurrentUser/My if not set.
Debugging
LogUnmappedRolesAsWarning When SetGroupsOnLogin is set to true, if LogUnmappedRolesAsWarning is also set to true this will log as warning for unmapped Entra ID groups, where the Entra ID name has a slash \ in it. By design it does not log everything to prevent logging of email addresses and so on.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. 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 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.Identity.Web (>= 3.8.3)
- Umbraco.Cms.Api.Management (>= 17.0.0)
- Umbraco.Cms.Infrastructure (>= 17.0.0)
- Umbraco.Cms.Web.Common (>= 17.0.0)
-
net6.0
- Microsoft.Identity.Web (>= 2.21.1)
- Umbraco.Cms.Web.BackOffice (>= 10.8.11)
-
net7.0
- Microsoft.Identity.Web (>= 2.21.1)
- Umbraco.Cms.Web.BackOffice (>= 11.5.0)
-
net8.0
- Microsoft.Identity.Web (>= 2.21.1)
- Umbraco.Cms.Web.BackOffice (>= 13.13.0)
-
net9.0
- Microsoft.Identity.Web (>= 2.21.1)
- Umbraco.Cms.Api.Management (>= 15.4.4)
- Umbraco.Cms.Infrastructure (>= 15.4.4)
- Umbraco.Cms.Web.Common (>= 15.4.4)
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 |
|---|---|---|
| 3.3.0 | 56 | 7/30/2026 |
| 3.2.1 | 10,387 | 3/2/2026 |
| 3.2.0 | 196 | 3/2/2026 |
| 3.1.0 | 16,556 | 8/11/2025 |
| 3.0.1 | 11,883 | 3/12/2025 |
| 2.2.0 | 30,811 | 10/24/2024 |
| 2.1.0 | 2,054 | 8/6/2024 |
| 2.0.0 | 2,811 | 7/12/2024 |
| 1.4.0 | 15,210 | 1/12/2024 |
| 1.3.0 | 1,252 | 10/4/2023 |
| 1.2.0.34 | 3,054 | 6/28/2023 |
| 1.1.1.25 | 684 | 3/31/2023 |
| 1.1.0.22 | 477 | 3/30/2023 |