Leggere in inglese

Condividi tramite


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.

Panoramica

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.

  1. 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.
  2. 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.

Ruoli predefiniti di Azure per Inoltro di Azure

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.

Ambito risorsa

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.

Eseguire l'autenticazione da un'app

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.

Registrare l'applicazione con un tenant di Microsoft Entra

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.

Creare un segreto client

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 ruoli di Azure usando il portale di Azure

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.

Eseguire l'esempio

  1. Scaricare l'esempio di applicazione console da GitHub.

  2. Eseguire l'applicazione in locale nel computer in base alle istruzioni dell'articolo README.

    Nota

    Seguire la stessa procedura per eseguire l'applicazione console di esempio per l'inoltro WCF.

Codice evidenziato dall'esempio

Ecco il codice dell'esempio che illustra come usare l'autenticazione di Microsoft Entra per connettersi al servizio inoltro di Azure.

  1. 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).

    1. Accedere al portale di Azure.
    2. Cercare e selezionare Microsoft Entra ID usando la barra di ricerca nella parte superiore.
    3. Nella pagina Microsoft Entra ID selezionare Registrazioni app nella sezione Gestisci del menu a sinistra.
    4. Selezionare la registrazione dell'app.
    5. 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:

    1. Nella pagina registrazione dell'app selezionare Certificati e segreti nel menu a sinistra.
    2. 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}");
    }
    
  2. 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);    
    

Esempi

Passaggi successivi

Per altre informazioni sull'inoltro di Azure, vedere gli articoli seguenti.