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.
Note
Questa funzionalità è disponibile a partire da MSAL.NET versione 4.54.0.
Uno dei problemi comuni a cui devono far fronte gli sviluppatori riguarda la gestione di segreti, credenziali, certificati e chiavi per proteggere la comunicazione tra i servizi. Le identità gestite in Azure eliminare la necessità per gli sviluppatori di gestire queste credenziali manualmente. MSAL.NET supporta l'acquisizione di token tramite il servizio di gestione delle identità quando viene usato con le applicazioni in esecuzione all'interno dell'infrastruttura Azure, ad esempio:
-
Servizio app di Azure (versione
2019-08-01API e versioni successive) - Macchine virtuali di Azure
- Arco Azzurro
- Azure Cloud Shell
- Azure Service Fabric
Per un elenco completo, vedere Azure servizi che possono usare le identità gestite per accedere ad altri servizi.
Quale SDK usare: Azure SDK o MSAL?
Le librerie MSAL offrono API di livello inferiore più vicine ai protocolli OAuth2 e OIDC.
Sia MSAL.NET che Azure SDK consentono di acquisire token tramite identità gestita. Internamente, Azure SDK usa MSAL.NET e fornisce un'API di livello superiore tramite le relative DefaultAzureCredential astrazioni e ManagedIdentityCredential .
Se l'applicazione usa già uno degli SDK, continuare a usare lo stesso SDK. Usare Azure SDK, se si sta scrivendo una nuova applicazione e si prevede di chiamare altre risorse Azure, poiché questo SDK offre un'esperienza di sviluppo migliore consentendo l'esecuzione dell'app in computer per sviluppatori privati in cui l'identità gestita non esiste. Valuta l'uso di MSAL se devi chiamare altre API web downstream, come Microsoft Graph o una tua API web.
Note
Microsoft. Identity.Web è un'API di livello superiore che offre l'integrazione con ASP.NET Core e ASP.NET classico, usando MSAL sotto le quinte. La libreria consente anche di caricare le credenziali (certificati, asserzioni firmate) usate da MSAL.NET come credenziali client. Per i certificati, usa DefaultAzureCredentials per recuperare i certificati da KeyVault. Offre anche la federazione dell'identità del carico di lavoro con credenziali di identità gestite. Per informazioni dettagliate, vedere CredentialDescription.
Avvio rapido
Per iniziare rapidamente e vedere l'Identità gestita di Azure in azione, è possibile usare uno degli esempi creati dal team a questo scopo:
Come usare le identità gestite
Per gli sviluppatori sono disponibili due tipi di identità gestite, assegnate dal sistema e assegnate dall'utente. Per altre informazioni sulle differenze, vedere l'articolo Tipi di identità gestiti . MSAL.NET supporta l'acquisizione di token con entrambi. MSAL.NET registrazione consente di tenere traccia delle richieste e dei metadati correlati.
Prima di usare le identità gestite da MSAL.NET, gli sviluppatori devono abilitarli per le risorse che vogliono usare tramite interfaccia della riga di comando di Azure o il portale di Azure.
Esempi
Per le identità assegnate dall'utente e assegnate dal sistema, gli sviluppatori possono usare la ManagedIdentityApplicationBuilder classe .
Identità gestite assegnate dal sistema
Per le identità gestite assegnate dal sistema, lo sviluppatore non deve passare informazioni aggiuntive durante la creazione di un'istanza di IManagedIdentityApplication, perché dedurrà automaticamente i metadati pertinenti sull'identità assegnata.
AcquireTokenForManagedIdentity(String) viene chiamato con la risorsa per cui acquisire un token, ad esempio https://management.azure.com.
IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.SystemAssigned)
.Build();
AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
.ExecuteAsync()
.ConfigureAwait(false);
Identità gestite assegnate dall'utente
Per le identità gestite assegnate dall'utente, lo sviluppatore deve specificare l'ID client, l'identificatore completo della risorsa o l'ID oggetto dell'identità gestita al momento della creazione di IManagedIdentityApplication.
Come nel caso delle identità gestite assegnate dal sistema, AcquireTokenForManagedIdentity(String) viene chiamato specificando la risorsa per cui acquisire un token, ad esempio https://management.azure.com.
IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.WithUserAssignedClientId(clientIdOfUserAssignedManagedIdentity))
.Build();
AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
.ExecuteAsync()
.ConfigureAwait(false);
Caching
Per impostazione predefinita, MSAL.NET supporta la memorizzazione nella cache in memoria. MSAL non supporta l'estendibilità della cache per l'identità gestita a causa di problemi di sicurezza quando si usa la cache distribuita. Poiché un token acquisito per l'identità gestita appartiene a una risorsa Azure, l'uso di una cache distribuita potrebbe esporlo alle altre risorse Azure che condividono la cache.
Troubleshooting
Per le richieste non riuscite, la risposta di errore contiene un ID di correlazione che può essere usato per ulteriori analisi di diagnostica e log. Tenere presente che gli ID di correlazione generati in MSAL.NET o passati in MSAL sono diversi da quelli restituiti nelle risposte di errore del server, perché MSAL.NET non è possibile passare l'ID di correlazione agli endpoint di acquisizione dei token di identità gestiti.
Potenziali errori
MsalServiceException Codice errore: messaggio di errore: managed_identity_failed_response si è verificato un errore imprevisto durante il recupero del token AAD
Questa eccezione potrebbe significare che la risorsa per cui si sta tentando di acquisire un token non è supportata o viene fornita usando il formato DI ID risorsa errato. Esempi di formati di ID risorsa corretti includono https://management.azure.com/.default, https://management.azure.come https://graph.microsoft.com.
MsalServiceException Codice errore: managed_identity_unreachable_network.
Questa eccezione potrebbe significare che è probabile che si stia usando una risorsa in cui MSAL.NET non supporta l'acquisizione del token per l'identità gestita o che si esegue il codice di esempio da un computer di sviluppo in cui l'endpoint per acquisire il token per le identità gestite non è raggiungibile.