Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft. Identity.Web supporta l'autenticazione basata su certificati come alternativa sicura ai segreti client per le applicazioni client riservate. I certificati offrono garanzie di sicurezza più avanzate perché usano la crittografia asimmetrica, ma solo il titolare della chiave privata può eseguire l'autenticazione e il certificato stesso può essere verificato in modo indipendente.
Questo articolo illustra come configurare le credenziali del certificato da varie origini, registrarle con l'app e gestirle nell'ambiente di produzione.
Perché usare i certificati?
| Fattore | Segreto del cliente | Certificato |
|---|---|---|
| sicurezza | Segreto condiviso (simmetrico) | Coppia di chiavi asimmetriche |
| Rotazione | Richiede la ridistribuzione o la modifica della configurazione dell'app | Può essere automatizzato tramite Key Vault |
| Rischio di esposizione | Il segreto nella configurazione può essere trapelato | La chiave privata rimane nell'archiviazione sicura |
| Conformità | Potrebbe non soddisfare i criteri aziendali | Soddisfa la maggior parte dei requisiti di sicurezza aziendali |
| Consigliato per | Sviluppo, creazione di prototipi | Carichi di lavoro di produzione |
Importante
Microsoft consiglia i certificati sui segreti client per le applicazioni di produzione. Per il comportamento di sicurezza più elevato, usare l'autenticazione senza certificati (identità gestita o federazione dell'identità del carico di lavoro) quando l'ambiente di hosting lo supporta.
Come funziona
- Generare o ottenere un certificato X.509 con una chiave privata.
- Registrare la chiave pubblica del certificato (o impronta) con la registrazione dell'app Microsoft Entra.
- In fase di esecuzione, Microsoft. Identity.Web carica il certificato (inclusa la chiave privata) dall'origine configurata.
- La libreria usa la chiave privata per firmare un'asserzione client inviata a Microsoft Entra ID per ottenere i token.
Origini certificato
Microsoft. Identity.Web supporta il caricamento di certificati da più origini:
| Tipo di origine | valore SourceType |
Ideale per |
|---|---|---|
| Azure Key Vault | KeyVault |
Produzione (scelta consigliata) |
| Archivio certificati |
StoreWithThumbprint oppure StoreWithDistinguishedName |
Server Windows, in sede |
| Percorso del file | Path |
Sviluppo, app containerizzate |
| Stringa con codifica Base64 | Base64Encoded |
Segreti di Kubernetes, pipeline di CI/CD |
Configura le credenziali del certificato nella matrice all'interno della sezione di configurazione ClientCertificates (o AzureAdB2C). È possibile specificare più certificati per scenari di rotazione, Microsoft. Identity.Web usa il primo certificato valido trovato.
Da Azure Key Vault (scelta consigliata)
Azure Key Vault è l'origine consigliata per i certificati nell'ambiente di produzione. Offre gestione centralizzata, controllo di accesso, audit e capacità di rotazione automatica.
Configurazione
Aggiungi la configurazione del certificato a appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
| Proprietà | Descrizione |
|---|---|
SourceType |
Deve essere "KeyVault". |
KeyVaultUrl |
URI del Azure Key Vault, ad esempio https://myapp-kv.vault.azure.net. |
KeyVaultCertificateName |
Nome del certificato archiviato in Key Vault. |
Configurare i criteri di accesso Key Vault
L'identità dell'applicazione deve essere autorizzata a leggere i certificati dal Key Vault. Il modo in cui si concede dipende dal fatto che si utilizzi il modello di criteri di accesso al vault o il controllo degli accessi basato su ruoli di Azure (RBAC).
Opzione 1: Politica di accesso alla cassaforte
az keyvault set-policy \
--name your-keyvault-name \
--object-id <app-or-managed-identity-object-id> \
--certificate-permissions get list \
--secret-permissions get
Annotazioni
L'autorizzazione --secret-permissions get è necessaria perché Azure Key Vault archivia la chiave privata come segreto collegato al certificato. Microsoft. Identity.Web deve accedere sia al certificato che alla relativa chiave privata.
Opzione 2: Azure RBAC
Assegnare all'identità dell'applicazione il ruolo Utente del certificato di Key Vault:
az role assignment create \
--role "Key Vault Certificate User" \
--assignee <app-or-managed-identity-object-id> \
--scope /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.KeyVault/vaults/<vault-name>
Usare l'identità gestita per accedere alle Key Vault
Quando l'app viene eseguita in Azure (servizio app, Funzioni di Azure, servizio Azure Kubernetes, macchine virtuali), usare l'identità gestita per eseguire l'autenticazione per Key Vault. In questo modo si elimina la necessità di qualsiasi credenziale per accedere al vault stesso.
Identità gestita assegnata dal sistema
Se l'app dispone di un'identità gestita assegnata dal sistema abilitata, Microsoft. Identity.Web usa automaticamente DefaultAzureCredential per eseguire l'autenticazione per Key Vault. Non è necessaria alcuna configurazione aggiuntiva oltre la ClientCertificates voce:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Identità gestita assegnata dall'utente
Per un'identità gestita assegnata dall'utente, specificare il ManagedIdentityClientId nel descrittore di certificato Key Vault:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Suggerimento
Durante l'esecuzione in locale durante lo sviluppo, DefaultAzureCredential ripiega sulle credenziali di interfaccia della riga di comando di Azure o Visual Studio. Assicurati di aver eseguito l'accesso con az login e che l'account sviluppatore disponga delle autorizzazioni Key Vault appropriate.
Dall'archivio certificati (solo Windows)
In Windows è possibile caricare i certificati dall'archivio certificati Windows. Questa operazione è comune per le distribuzioni locali o ospitate in IIS.
Per identificazione personale
Usare StoreWithThumbprint per identificare il certificato in base all'impronta digitale SHA-1:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithThumbprint",
"CertificateStorePath": "CurrentUser/My",
"CertificateThumbprint": "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"
}
]
}
}
| Proprietà | Descrizione |
|---|---|
SourceType |
Deve essere "StoreWithThumbprint". |
CertificateStorePath |
Posizione dell'archivio dei certificati. Valori comuni: "CurrentUser/My", "LocalMachine/My". |
CertificateThumbprint |
Impronta digitale SHA-1 del certificato (40 caratteri esadecimali). |
Per nome distinto
Usare StoreWithDistinguishedName per identificare il certificato in base al nome del soggetto:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateStorePath": "CurrentUser/My",
"CertificateDistinguishedName": "CN=MyAppCertificate"
}
]
}
}
| Proprietà | Descrizione |
|---|---|
SourceType |
Deve essere "StoreWithDistinguishedName". |
CertificateStorePath |
Posizione di memorizzazione del certificato. Valori comuni: "CurrentUser/My", "LocalMachine/My". |
CertificateDistinguishedName |
Nome distinto del soggetto del certificato (ad esempio, "CN=MyAppCertificate"). |
Posizioni dell'archivio certificati
| Percorso | Descrizione | Autorizzazioni necessarie |
|---|---|---|
CurrentUser/My |
Archivio personale dell'utente corrente | Accesso a livello di utente |
LocalMachine/My |
Archivio personale a livello di sistema | Accesso dell'amministratore |
LocalMachine/Root |
CA Radice Attendibili | Accesso all'amministratore |
CurrentUser/Root |
Autorità di certificazione radice attendibili dell'utente corrente | Accesso a livello di utente |
Annotazioni
Quando si ospita in IIS, l'identità del pool di applicazioni deve avere accesso in lettura alla chiave privata del certificato. È possibile concedere questa operazione usando l'opzione Gestisci chiavi private nello snap-in MMC Certificati.
Dal percorso del file
È possibile caricare un certificato direttamente da un .pfx file (PKCS#12) su disco.
Avvertimento
L'archiviazione di file di certificato su disco con password nella configurazione non è consigliata per la produzione. Usare questo approccio solo per lo sviluppo locale o negli ambienti in cui il file system è protetto (ad esempio, segreti montati in contenitori).
Configurazione
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "Path",
"CertificateDiskPath": "/path/to/certificate.pfx",
"CertificatePassword": "your-certificate-password"
}
]
}
}
| Proprietà | Descrizione |
|---|---|
SourceType |
Deve essere "Path". |
CertificateDiskPath |
Percorso assoluto o relativo del .pfx file. |
CertificatePassword |
Password per il .pfx file. Se il certificato non ha password, omettere questa proprietà o impostarla su una stringa vuota. |
Suggerimento
Per evitare di archiviare la password in testo normale in appsettings.json, farvi riferimento da una variabile di ambiente o da un gestore segreti:
Utilizzo di segreti utente .NET (sviluppo):
dotnet user-secrets set "AzureAd:ClientCertificates:0:CertificatePassword" "your-password"
Uso di una variabile di ambiente:
export AzureAd__ClientCertificates__0__CertificatePassword="your-password"
Dal valore codificato in Base64
È possibile specificare il certificato come stringa con codifica Base64. Questo approccio è utile quando si inserisce certificati tramite variabili di ambiente, segreti Kubernetes o variabili della pipeline CI/CD.
Configurazione
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0GCSqGSIb3DQEHAaCCCh4Egg..."
}
]
}
}
| Proprietà | Descrizione |
|---|---|
SourceType |
Deve essere "Base64Encoded". |
Base64EncodedValue |
Il certificato completo (inclusa la chiave privata) codificato come stringa Base64. |
Generare il valore Base64
Convertire un .pfx file in una stringa Base64:
PowerShell:
$certBytes = [System.IO.File]::ReadAllBytes("path/to/certificate.pfx")
$base64 = [System.Convert]::ToBase64String($certBytes)
$base64 | Set-Clipboard # Copies to clipboard
Bash:
base64 -w 0 path/to/certificate.pfx
Uso con i secret di Kubernetes
Archiviare il certificato con codifica Base64 in un segreto Kubernetes ed eseguirne il mapping a una variabile di ambiente:
apiVersion: v1
kind: Secret
metadata:
name: app-cert-secret
type: Opaque
data:
AzureAd__ClientCertificates__0__Base64EncodedValue: <base64-encoded-pfx>
Fare riferimento al segreto nell'implementazione.
env:
- name: AzureAd__ClientCertificates__0__SourceType
value: "Base64Encoded"
- name: AzureAd__ClientCertificates__0__Base64EncodedValue
valueFrom:
secretKeyRef:
name: app-cert-secret
key: AzureAd__ClientCertificates__0__Base64EncodedValue
Utilizzo nelle pipeline CI/CD
In Azure DevOps o GitHub Actions archiviare il certificato con codifica Base64 come variabile privata, quindi impostarlo come variabile di ambiente in fase di esecuzione.
Esempio di GitHub Actions:
env:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: ${{ secrets.APP_CERTIFICATE_BASE64 }}
Azure DevOps esempio:
variables:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: $(AppCertificateBase64)
Importante
Anche se il certificato è con codifica Base64, contiene la chiave privata e deve essere considerato come segreto. Usare sempre le variabili segrete nelle pipeline CI/CD, senza mai eseguire il commit dei certificati con codifica Base64 nel controllo del codice sorgente.
Configurare i certificati nel codice C#
Oltre alla configurazione JSON, è possibile configurare le credenziali del certificato a livello di codice usando la classe CredentialDescription da Microsoft.Identity.Abstractions. La classe fornisce metodi helper statici per ogni tipo di origine del certificato:
Metodi di supporto
using Microsoft.Identity.Abstractions;
// From Azure Key Vault
var kvCredential = CredentialDescription.FromKeyVault(
"https://your-keyvault-name.vault.azure.net",
"your-certificate-name");
// From certificate store (by thumbprint)
var thumbprintCredential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
thumbprint: "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2");
// From certificate store (by distinguished name)
var dnCredential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
distinguishedName: "CN=MyAppCertificate");
// From file path
var pathCredential = CredentialDescription.FromCertificatePath(
"/path/to/certificate.pfx",
"your-certificate-password");
// From Base64-encoded string
var base64Credential = CredentialDescription.FromBase64String(
"MIIKcQIBAzCCCi0GCSqGSIb3DQEHAaCCCh4Egg...");
Usare in ASP.NET Core
Passare le descrizioni delle credenziali direttamente durante la configurazione dell'autenticazione:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
options.Instance = "https://login.microsoftonline.com/";
options.TenantId = "your-tenant-id";
options.ClientId = "your-client-id";
options.ClientCredentials = new[]
{
CredentialDescription.FromKeyVault(
"https://your-keyvault-name.vault.azure.net",
"your-certificate-name")
};
});
Suggerimento
I metodi helper sono equivalenti all'impostazione manuale delle proprietà su un CredentialDescription oggetto. Forniscono una sintassi più concisa quando si configurano le credenziali nel codice anziché tramite appsettings.json.
Creare un certificato autofirmato per lo sviluppo
Per lo sviluppo e il test locali, è possibile creare un certificato autofirmato. Non usare certificati autofirmato nell'ambiente di produzione.
Uso di PowerShell (Windows)
$cert = New-SelfSignedCertificate `
-Subject "CN=MyDevCertificate" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeySpec Signature `
-KeyLength 2048 `
-KeyAlgorithm RSA `
-HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddYears(2)
# Export the .pfx file (with private key)
$password = ConvertTo-SecureString -String "YourPassword123!" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\MyDevCertificate.pfx" -Password $password
# Export the .cer file (public key only — for app registration)
Export-Certificate -Cert $cert -FilePath ".\MyDevCertificate.cer"
# Display the thumbprint
Write-Host "Thumbprint: $($cert.Thumbprint)"
Uso di OpenSSL (multipiattaforma)
# Generate a self-signed certificate and private key
openssl req -x509 -newkey rsa:2048 \
-keyout key.pem -out cert.pem \
-days 730 -nodes \
-subj "/CN=MyDevCertificate"
# Package into a .pfx file
openssl pkcs12 -export \
-out MyDevCertificate.pfx \
-inkey key.pem -in cert.pem \
-passout pass:YourPassword123!
# Get the thumbprint
openssl x509 -in cert.pem -noout -fingerprint -sha1
Utilizzo di .NET CLI
dotnet dev-certs https --export-path ./MyDevCertificate.pfx --password YourPassword123!
Annotazioni
Il dotnet dev-certs comando genera un certificato di sviluppo HTTPS. Anche se può essere usato per il test del caricamento dei certificati, è destinato principalmente a HTTPS locale e potrebbe non essere adatto per tutti gli scenari di test di autenticazione.
Registrare il certificato in Microsoft Entra ID
Dopo aver creato o ottenuto un certificato, è necessario registrarne la chiave pubblica con la registrazione dell'app in Microsoft Entra ID.
Uso del portale di Azure
- Passare al portale Azure e passare a Microsoft Entra ID>Registrazioni app.
- Selezionare l'applicazione.
- Selezionare Certificati e segreti>Certificati>Carica certificato.
- Caricare il
.cerfile o.pemcontenente solo la chiave pubblica. Non caricare il.pfxfile, che contiene la chiave privata. - Si noti il valore impronta digitale visualizzato dopo il caricamento — potrebbe essere necessario per la configurazione.
Uso di interfaccia della riga di comando di Azure
az ad app credential reset \
--id <application-client-id> \
--cert @/path/to/certificate.pem \
--append
Il --append flag aggiunge il certificato senza rimuovere le credenziali esistenti.
Uso di Microsoft Graph PowerShell
$certData = [System.IO.File]::ReadAllBytes(".\MyDevCertificate.cer")
$base64Cert = [System.Convert]::ToBase64String($certData)
$keyCredential = @{
type = "AsymmetricX509Cert"
usage = "Verify"
key = [System.Convert]::FromBase64String($base64Cert)
displayName = "MyAppCertificate"
}
Update-MgApplication -ApplicationId <app-object-id> -KeyCredentials @($keyCredential)
Importante
Caricare solo la chiave pubblica (.cer o .pem) nella registrazione dell'app. Non caricare mai il .pfx file, che contiene la chiave privata. La chiave privata deve rimanere archiviata in modo sicuro e accessibile solo all'applicazione.
Rotazione dei certificati
La rotazione dei certificati è la procedura di sostituzione di un certificato in scadenza con un nuovo certificato prima della scadenza, garantendo un servizio ininterrotto.
Strategia: certificati sovrapposti
L'approccio consigliato usa periodi di validità sovrapposti:
- Generare un nuovo certificato prima della scadenza corrente(ad esempio, 30-60 giorni in anticipo).
- Registrare il nuovo certificato nella registrazione dell'app Microsoft Entra insieme a quella esistente. Microsoft Entra ID accetta token firmati da qualsiasi certificato registrato.
- Distribuire il nuovo certificato all'origine del certificato dell'applicazione (Key Vault, archivio certificati e così via).
- Aggiornare la configurazione (se necessario) in modo che punti al nuovo certificato.
- Rimuovere il certificato precedente dalla registrazione dell'app dopo aver confermato che tutte le istanze usano quella nuova.
Più certificati nella configurazione
Microsoft. Identity.Web supporta la specifica di più certificati. La libreria li prova nell'ordine e usa il primo certificato valido.
{
"AzureAd": {
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "new-cert-2026"
},
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "current-cert-2025"
}
]
}
}
Rotazione automatica con Azure Key Vault
Azure Key Vault supporta il rinnovo automatico dei certificati. Quando si abilita la rotazione automatica:
- Key Vault genera una nuova versione del certificato prima della scadenza.
- Microsoft. Identity.Web seleziona automaticamente la versione più recente (al recupero del certificato successivo).
- La versione precedente del certificato rimane valida fino alla scadenza.
Per configurare la rotazione automatica in Key Vault:
az keyvault certificate set-attributes \
--vault-name your-keyvault-name \
--name your-certificate-name \
--policy @rotation-policy.json
Suggerimento
Per le applicazioni con processi a esecuzione prolungata, è consigliabile implementare un aggiornamento periodico del certificato. Microsoft. Identity.Web memorizza nella cache il certificato in memoria. Se il certificato viene ruotato in Key Vault, l'applicazione preleva il nuovo certificato alla successiva creazione di una nuova istanza dell'applicazione client riservata MSAL.
Risoluzione dei problemi
Errori comuni
Certificato non trovato
Messaggio di errore:
System.Security.Cryptography.CryptographicException: The certificate cannot be found.
Possibili cause e soluzioni:
| Motivo | Soluzione |
|---|---|
| Identificazione personale non corretta | Verificare che l'impronta digitale nella configurazione corrisponda al certificato installato. Rimuovere tutti i caratteri nascosti (spazi, Unicode invisibile). |
| Archivio certificati errato | Verificare CertificateStorePath le corrispondenze in cui è installato il certificato (CurrentUser/My vs LocalMachine/My). |
| Certificato non installato | Importare il certificato nell'archivio corretto usando certmgr.msc (CurrentUser) o certlm.msc (LocalMachine). |
| nome Key Vault non corrispondente | Verificare che KeyVaultUrl e KeyVaultCertificateName siano corretti. |
| File non trovato | Verificare che CertificateDiskPath punti a un file esistente .pfx e che l'applicazione abbia accesso in lettura. |
Accesso negato a Key Vault
Messaggio di errore:
Azure.RequestFailedException: The user, group or application '...' does not have certificates get permission on key vault '...'
Soluzioni:
- Verificare che i criteri di accesso concedano
getl'autorizzazione sia per i certificati che per i segreti. - Se si usa Azure Controllo degli Accessi in base al Ruolo (RBAC), verificare che l'identità abbia il ruolo Utente Certificate di Key Vault.
- Per Identità gestita verificare che l'identità sia abilitata e che venga usato l'ID oggetto corretto nei criteri.
Chiave privata del certificato non accessibile
Messaggio di errore:
System.Security.Cryptography.CryptographicException: Keyset does not exist.
Soluzioni:
- Su Windows/IIS, verificare che l'identità del pool di applicazioni abbia accesso in lettura alla chiave privata. Usare lo snap-in MMC Certificati per concedere l'accesso tramite Gestisci chiavi private.
- In Linux verificare che il
.pfxfile disponga delle autorizzazioni di file appropriate (chmod 600). - Verificare che il certificato sia stato esportato con la chiave privata (
Export-PfxCertificateoopenssl pkcs12 -export).
Certificato scaduto
Messaggio di errore:
AADSTS700027: Client assertion contains an invalid signature. The key was expired.
Soluzioni:
- Controllare il periodo di validità del certificato:
openssl x509 -in cert.pem -noout -dates. - Generare un nuovo certificato e aggiornare sia la registrazione dell'app che la configurazione dell'applicazione.
- Implementare la rotazione dei certificati per evitare problemi di scadenza futuri. Vedere Rotazione dei certificati.
Password del certificato errata
Messaggio di errore:
System.Security.Cryptography.CryptographicException: The specified network password is not correct.
Soluzioni:
- Verificare che
CertificatePasswordcorrisponda alla password usata durante l'esportazione del file.pfx. - Se si usano variabili di ambiente, verificare la presenza di problemi di codifica (nuove righe finali, caratteri speciali).
- Esportare nuovamente il certificato con una password nota.
Elenco di controllo diagnostico
Usare questo elenco di controllo quando l'autenticazione del certificato non funziona:
- [ ] Validità del certificato : il certificato rientra nel periodo di validità? Controlla le date
NotBeforeeNotAfter. - [ ] Registrazione dell'app : la chiave pubblica del certificato viene caricata nella registrazione dell'app corretta?
- [ ] Corrispondenza thumbprint : l'impronta digitale nella configurazione corrisponde al certificato nella registrazione dell'app?
- [ ] Accesso alla chiave privata : il processo dell'applicazione può leggere la chiave privata del certificato?
- [ ] Autorizzazioni del Key Vault — Per le origini Key Vault, l'identità dispone di autorizzazioni sia
certificates/getchesecrets/get? - [ ] Sezione di configurazione : la configurazione del certificato è nella sezione corretta (
AzureAdoAzureAdB2C)? - [ ] Pacchetti NuGet —
Microsoft.Identity.Webè aggiornato? Le versioni precedenti potrebbero non supportare determinati tipi di origine del certificato.
Abilitare la registrazione
Per ottenere informazioni di diagnostica dettagliate, abilitare la registrazione MSAL nell'applicazione:
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
builder.Logging.AddFilter("Microsoft.Identity", LogLevel.Debug);
Esaminare i log per i messaggi relativi al caricamento dei certificati, alla creazione di asserzioni client e agli errori di acquisizione dei token.
Contenuti correlati
- Panoramica delle credenziali
- Autenticazione senza certificati - Identità gestita e Federazione dell'identità dei carichi di lavoro
- Segreti client : tipo di credenziale alternativo per le app riservate
- Decrittografia dei token : uso di certificati per la decrittografia dei token
- Registrazione e diagnostica