Autenticare e autorizzare un'applicazione con l'ID Microsoft Entra per accedere alle entità di inoltro di Azure
Inoltro di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste alle entità di inoltro di Azure (connessioni ibride, inoltro WCF). Con Microsoft Entra ID è possibile usare il controllo degli accessi in base al ruolo di Azure per concedere autorizzazioni a un'entità di sicurezza, che può essere un utente o un'entità servizio dell'applicazione. Per altre informazioni sui ruoli e sulle assegnazioni di ruolo, vedere Informazioni sui diversi ruoli.
Nota
Questa funzionalità è disponibile a livello generale in tutte le aree ad eccezione di Microsoft Azure gestita da 21Vianet.
Quando un'entità di sicurezza (un utente, un gruppo, un'applicazione) tenta di accedere a un'entità di inoltro, la richiesta deve essere autorizzata. Con Microsoft Entra ID, l'accesso a una risorsa è un processo in due passaggi.
- In primo luogo, l'identità dell'entità di sicurezza viene autenticata e viene restituito un token OAuth 2.0. Il nome della risorsa per richiedere un token è
https://relay.azure.net
. Se un'applicazione viene eseguita all'interno di un'entità di Azure, ad esempio una macchina virtuale di Azure, un set di scalabilità di macchine virtuali o un'app di Funzioni di Azure, può usare un'identità gestita per accedere alle risorse. - Il token viene quindi passato come parte di una richiesta al servizio di inoltro per autorizzare l'accesso alla risorsa specificata (connessioni ibride, inoltro WCF). Microsoft Entra autorizza i diritti di accesso alle risorse protette tramite il controllo degli accessi in base al ruolo di Azure. Inoltro di Azure definisce un set di ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere alle entità di inoltro. È anche possibile definire ruoli personalizzati per l'accesso ai dati. Per un elenco dei ruoli predefiniti supportati da Inoltro di Azure, vedere Ruoli predefiniti di Azure per Inoltro di Azure. Le applicazioni native e le applicazioni Web che effettuano richieste all'inoltro possono anche autorizzare con Microsoft Entra ID.
Per Inoltro di Azure, la gestione degli spazi dei nomi e di tutte le risorse correlate tramite il portale di Azure e l'API di gestione delle risorse di Azure è già protetta usando il modello di controllo degli accessi in base al ruolo di Azure. Azure fornisce i ruoli predefiniti di Azure seguenti per autorizzare l'accesso a uno spazio dei nomi di inoltro:
Ruolo | Descrizione |
---|---|
Proprietario dell'inoltro di Azure | Usare questo ruolo per concedere l'accesso completo alle risorse di Inoltro di Azure. |
Listener di inoltro di Azure | Usare questo ruolo per concedere l'accesso in lettura in ascolto e entità alle risorse di Inoltro di Azure. |
Mittente dell'inoltro di Azure | Usare questo ruolo per concedere l'accesso in lettura di invio ed entità alle risorse di Inoltro di Azure. |
Prima di assegnare un ruolo Controllo degli accessi in base al ruolo a un'entità di sicurezza, determinare l'ambito di accesso che dovrà avere. In base alle procedure consigliate, è sempre preferibile concedere solo l'ambito più restrittivo possibile.
L'elenco seguente descrive i livelli in cui è possibile definire l'ambito dell'accesso alle risorse di Inoltro di Azure, a partire dall'ambito più ristretto:
- Entità di inoltro: l'assegnazione di ruolo si applica a un'entità di inoltro specifica, ad esempio una connessione ibrida o un inoltro WCF.
- Spazio dei nomi di inoltro: l'assegnazione di ruolo si applica a tutte le entità di inoltro nello spazio dei nomi .
- Gruppo di risorse: l'assegnazione di ruolo si applica a tutte le risorse di inoltro nel gruppo di risorse.
- Sottoscrizione: l'assegnazione di ruolo si applica a tutte le risorse di inoltro in tutti i gruppi di risorse nella sottoscrizione.
Nota
Tenere presente che la propagazione delle assegnazioni di ruolo di Azure può richiedere fino a cinque minuti. Per altre informazioni sul modo in cui vengono definiti i ruoli predefiniti, vedere Informazioni sulle definizioni di ruolo. Per informazioni sulla creazione di ruoli personalizzati di Azure, consultare Ruoli personalizzati di Azure.
Un vantaggio fondamentale dell'uso di Microsoft Entra ID con Inoltro di Azure è che le credenziali non devono più essere archiviate nel codice. È invece possibile richiedere un token di accesso OAuth 2.0 da Microsoft Identity Platform. Microsoft Entra esegue l'autenticazione dell'entità di sicurezza (un utente, un gruppo o un'entità servizio) che esegue l'applicazione. Se l'autenticazione ha esito positivo, Microsoft Entra ID restituisce il token di accesso all'applicazione e l'applicazione può quindi usare il token di accesso per autorizzare le richieste all'inoltro di Azure.
Le sezioni seguenti illustrano come configurare l'applicazione console per l'autenticazione con Microsoft Identity Platform 2.0. Per altre informazioni, vedere Panoramica di Microsoft Identity Platform (v2.0).
Per una panoramica del flusso di concessione del codice di OAuth 2.0, vedere Autorizzare l'accesso ad applicazioni Web di Microsoft Entra mediante il flusso di concessione di OAuth 2.0.
Il primo passaggio nell'uso di Microsoft Entra ID per autorizzare le entità di inoltro di Azure consiste nel registrare l'applicazione client con un tenant di Microsoft Entra dal portale di Azure. Quando si registra l'applicazione client, si forniscono informazioni sull'applicazione ad AD. Microsoft Entra ID fornisce quindi un ID client (detto anche ID applicazione) che si può usare per associare l'applicazione al runtime di Microsoft Entra.
Per istruzioni dettagliate per registrare l'applicazione con Microsoft Entra ID, vedere Guida introduttiva: Registrare un'applicazione con Microsoft Entra ID.
Importante
Prendere nota dell'ID directory (tenant) e dell'ID applicazione (client). Questi valori saranno necessari per eseguire l'applicazione di esempio.
L'applicazione deve avere un segreto client per dimostrare la propria identità quando richiede un token. Nello stesso articolo collegato in precedenza, vedere la sezione Aggiungere un segreto client per creare un segreto client.
Importante
Prendere nota del segreto client. Sarà necessario per eseguire l'applicazione di esempio.
Assegnare uno dei ruoli di Inoltro di Azure all'entità servizio dell'applicazione nell'ambito desiderato (entità di inoltro, spazio dei nomi, gruppo di risorse, sottoscrizione). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Scaricare l'esempio di applicazione console da GitHub.
Eseguire l'applicazione in locale nel computer in base alle istruzioni dell'articolo README.
Ecco il codice dell'esempio che illustra come usare l'autenticazione di Microsoft Entra per connettersi al servizio inoltro di Azure.
Creare un oggetto TokenProvider usando il
TokenProvider.CreateAzureActiveDirectoryTokenProvider
metodo .Se non è già stata creata una registrazione dell'app, vedere la sezione Registrare l'applicazione con l'ID Microsoft Entra per crearla e quindi creare un segreto client come indicato nella sezione Creare un segreto client.
Se si vuole usare una registrazione dell'app esistente, seguire queste istruzioni per ottenere l'ID applicazione (client) e l'ID directory (tenant).
- Accedere al portale di Azure.
- Cercare e selezionare Microsoft Entra ID usando la barra di ricerca nella parte superiore.
- Nella pagina Microsoft Entra ID selezionare Registrazioni app nella sezione Gestisci del menu a sinistra.
- Selezionare la registrazione dell'app.
- Nella pagina per la registrazione dell'app sono visualizzati i valori per ID applicazione (client) e ID directory (tenant).
Per ottenere il segreto client, seguire questa procedura:
- Nella pagina registrazione dell'app selezionare Certificati e segreti nel menu a sinistra.
- Usare il pulsante Copia nella colonna Valore per il segreto nella sezione Segreti client.
static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret) { return TokenProvider.CreateAzureActiveDirectoryTokenProvider( async (audience, authority, state) => { IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync(); return authResult.AccessToken; }, $"https://login.microsoftonline.com/{tenantId}"); }
Creare un oggetto HybridConnectionListener o HybridConnectionClient passando l'URI della connessione ibrida e il provider di token creato nel passaggio precedente.
Listener:
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
Mittente:
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
- Connessioni ibride: .NET, Java, JavaScript
- Inoltro WCF: .NET
- Per ulteriori informazioni sul controllo degli accessi in base al ruolo di Azure, vedere Che cos'è il controllo degli accessi in base al ruolo di Azure?
- Per informazioni su come assegnare e gestire le assegnazioni di ruolo di Azure con Azure PowerShell, l'interfaccia della riga di comando di Azure o l'API REST, vedere gli articoli seguenti:
- Aggiungere o rimuovere assegnazioni di ruolo di Azure con Azure PowerShell
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite l'interfaccia della riga di comando di Azure
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite l'API REST
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite modelli di Azure Resource Manager
Per altre informazioni sull'inoltro di Azure, vedere gli articoli seguenti.