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 per go versione 1.3.1.
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 for Go 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:
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 per Go che Azure SDK per Go consentono di acquisire token tramite identità gestita. Internamente, Azure SDK usa MSAL per Go e fornisce un'API di livello superiore tramite le relative DefaultAzureCredential astrazioni e ManagedIdentityCredential .
Se l'applicazione usa già uno degli SDK indicati in precedenza, continuare a usare lo stesso SDK. Usare Azure SDK se si scrive una nuova applicazione e si prevede di chiamare altre risorse Azure. Azure SDK offre un'esperienza di sviluppo più semplice consentendo all'app di usare LE API locali, ad esempio DefaultAzureCredential, abilitando i test nei computer 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.
Come usare le identità gestite
Esistono due tipi di identità gestite disponibili per gli sviluppatori assegnati al sistema e assegnati dall'utente. Per altre informazioni sulle differenze, vedere l'articolo Tipi di identità gestiti . MSAL for Go supporta l'acquisizione di token per entrambi.
Una rapida panoramica di ognuna di esse è:
Assegnato dal sistema: creato e gestito da Azure e associato al ciclo di vita di una risorsa. Quando la risorsa viene eliminata, viene eliminata anche l'identità assegnata dal sistema
Assegnata dall'utente: creata come risorsa autonoma in Azure. Non è associato a alcuna risorsa specifica. Può essere assegnato a più risorse e gestito in modo indipendente. Utile quando sono necessarie più risorse che condividono la stessa identità e le stesse autorizzazioni
Prima di usare le identità gestite da MSAL for Go, gli sviluppatori devono abilitarli per le risorse che vogliono usare tramite interfaccia della riga di comando di Azure o il portale di Azure.
Creazione di risorse Azure
È possibile creare le risorse necessarie per eseguire manualmente l'esempio tramite il portale di Azure o per una scomposizione rapida e concisa di come eseguire questa operazione usando interfaccia della riga di comando di Azure o Azure PowerShell, seguire le istruzioni riportate nell'articolo Autenticazione con il Azure SDK per Go usando un'identità gestita.
Avvio rapido
Per iniziare rapidamente e vedere l'identità gestita in azione, è possibile usare uno degli esempi:
Esempi
Per le identità assegnate dall'utente e assegnate dal sistema, gli sviluppatori possono usare la New funzione in managedidentity.go
Identità gestite assegnate dal sistema
Per le identità gestite assegnate dal sistema, passare SystemAssigned() alla funzione New
mi.New(mi.SystemAssigned())
AcquireToken viene chiamato con il contesto, la risorsa per acquisire un token, ad esempio https://management.azure.com, insieme a eventuali facoltativi.
miClient, err := mi.New(mi.SystemAssigned())
if err != nil {
log.Fatalf("failed to create a new managed identity client: %v", err)
return
}
accessToken, err := miClient.AcquireToken(context.Background(), "https://vault.azure.net")
if err != nil {
log.Fatalf("failed to acquire token: %v", err)
return
}
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 New.
Analogamente alle identità gestite assegnate dal sistema, AcquireToken viene chiamato con la risorsa per cui acquisire un token, ad esempio https://management.azure.com.
miClient, err := mi.New(mi.UserAssignedClientID("my-client-id"))
miClient, err := mi.New(mi.UserAssignedObjectID("my-object-id"))
miClient, err := mi.New(mi.UserAssignedResourceID("my-resource-id"))
accessToken, err := miClient.AcquireToken(context.Background(), "https://vault.azure.net")
if err != nil {
log.Fatalf("failed to acquire token: %v", err)
return
}
Caching
Per impostazione predefinita, MSAL per Go supporta la memorizzazione nella cache in memoria MSAL non supporta l'estendibilità della cache per le identità gestite a causa di problemi di sicurezza quando si usa una cache distribuita. Poiché un token acquisito per un'identità gestita appartiene a una risorsa Azure, l'uso di una cache distribuita potrebbe esporlo ad altre risorse Azure che condividono la cache.
Risoluzione dei problemi e gestione degli errori
Gli errori in MSAL sono destinati agli sviluppatori di app per la risoluzione dei problemi e non per la visualizzazione agli utenti finali.
Per altre informazioni su come gestire gli errori da MSAL, vedere error_design.md
Gli errori restituiti (originati dal servizio di gestione delle identità) contengono un contesto interattivo che consente di eseguire i passaggi di mitigazione.
Potenziali errori
Per altre informazioni sui potenziali errori restituiti dal servizio di gestione delle identità, vedere l'elenco dei codici di errore