Autenticare e autorizzare un'applicazione con Microsoft Entra ID per accedere alle entità bus di servizio di Azure

bus di servizio di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste a bus di servizio entità (code, argomenti, sottoscrizioni o filtri). 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. Un vantaggio fondamentale dell'uso di Microsoft Entra ID con bus di servizio di Azure è che non è più necessario archiviare le credenziali nel codice. È invece possibile richiedere un token di accesso OAuth 2.0 da Microsoft Identity Platform. Se l'autenticazione ha esito positivo, Microsoft Entra ID restituisce un token di accesso all'applicazione e l'applicazione può quindi usare il token di accesso per autorizzare la richiesta di bus di servizio risorse.

Importante

È possibile disabilitare l'autenticazione della chiave di firma di accesso condiviso o locale per uno spazio dei nomi bus di servizio e consentire solo l'autenticazione di Microsoft Entra. Per istruzioni dettagliate, vedere Disabilitare l'autenticazione locale.

Panoramica

Quando un'entità di sicurezza (un utente, un gruppo o un'applicazione) tenta di accedere a un'entità bus di servizio, 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://servicebus.azure.net.
  2. Il token viene quindi passato come parte di una richiesta al servizio bus di servizio per autorizzare l'accesso alla risorsa specificata.

Il passaggio di autenticazione richiede che una richiesta dell'applicazione contenga un token di accesso OAuth 2.0 in fase di esecuzione. Se un'applicazione è in esecuzione all'interno di un'entità di Azure, ad esempio una macchina virtuale, un set di scalabilità di macchine virtuali o un'app per le funzioni di Azure, può usare un'identità gestita per accedere alle risorse. Per informazioni su come autenticare le richieste effettuate da un'identità gestita al servizio bus di servizio, vedere Autenticare l'accesso alle risorse bus di servizio di Azure con l'ID Microsoft Entra e le identità gestite per le risorse di Azure.

Il passaggio di autorizzazione richiede l'assegnazione di uno o più ruoli di Azure all'entità di sicurezza. bus di servizio di Azure fornisce ruoli di Azure che includono set di autorizzazioni per le risorse di bus di servizio. I ruoli assegnati a un'entità di sicurezza determinano le autorizzazioni che l'entità avrà sulle risorse di bus di servizio. Per altre informazioni sull'assegnazione di ruoli di Azure a bus di servizio di Azure, vedere Ruoli predefiniti di Azure per bus di servizio di Azure.

Le applicazioni native e le applicazioni Web che effettuano richieste a bus di servizio possono anche autorizzare con Microsoft Entra ID. Questo articolo illustra come richiedere un token di accesso e usarlo per autorizzare le richieste di bus di servizio risorse.

Ruoli predefiniti di Azure per bus di servizio di Azure

Microsoft Entra autorizza i diritti di accesso alle risorse protette tramite il controllo degli accessi in base al ruolo di Azure. bus di servizio di Azure definisce un set di ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere bus di servizio entità ed è anche possibile definire ruoli personalizzati per l'accesso ai dati.

Quando un ruolo di Azure viene assegnato a un'entità di sicurezza Microsoft Entra, Azure concede l'accesso a tali risorse per tale entità di sicurezza. L'accesso può essere limitato al livello di sottoscrizione, al gruppo di risorse o allo spazio dei nomi bus di servizio. Un'entità di sicurezza Di Microsoft Entra può essere un utente, un gruppo, un'entità servizio dell'applicazione o un'identità gestita per le risorse di Azure.

Per bus di servizio 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 offre i ruoli predefiniti seguenti per autorizzare l'accesso a uno spazio dei nomi bus di servizio:

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 bus di servizio, a partire dall'ambito più ristretto:

  • Coda, argomento o sottoscrizione: l'assegnazione di ruolo si applica all'entità bus di servizio specifica. Attualmente, l'portale di Azure non supporta l'assegnazione di utenti/gruppi/identità gestite a bus di servizio ruoli di Azure a livello di sottoscrizione.
  • bus di servizio spazio dei nomi: l'assegnazione di ruolo si estende sull'intera topologia di bus di servizio nello spazio dei nomi e nel gruppo di consumer associato.
  • Gruppo di risorse: l'assegnazione di ruolo si applica a tutte le risorse bus di servizio nel gruppo di risorse.
  • Sottoscrizione: l'assegnazione di ruolo si applica a tutte le risorse bus di servizio 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 sulla definizione dei ruoli predefiniti, vedere Informazioni sulle definizioni dei ruoli. Per informazioni sulla creazione di ruoli personalizzati di Azure, vedere Ruoli personalizzati di Azure.

Eseguire l'autenticazione da un'applicazione

Un vantaggio fondamentale dell'uso di Microsoft Entra ID con bus di servizio è 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 a bus di servizio di Azure.

Le sezioni seguenti illustrano come configurare l'applicazione nativa o l'applicazione Web per l'autenticazione con Microsoft Identity Platform 2.0. Per altre informazioni su Microsoft Identity Platform 2.0, vedere Panoramica di Microsoft Identity Platform (v2.0).

Per una panoramica del flusso di concessione del codice OAuth 2.0, vedere Autorizzare l'accesso alle applicazioni Web Microsoft Entra usando il flusso di concessione del codice OAuth 2.0.

Registrare l'applicazione con un tenant di Microsoft Entra

Il primo passaggio nell'uso di Microsoft Entra ID per autorizzare bus di servizio entità 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 è possibile usare per associare l'applicazione al runtime di Microsoft Entra. Per altre informazioni sull'ID client, vedere Oggetti applicazione e entità servizio in Microsoft Entra ID.

Seguire la procedura descritta nella guida introduttiva: Registrare un'applicazione con Microsoft Identity Platform per registrare l'applicazione con Microsoft Entra ID.

Nota

Se si registra l'applicazione come applicazione nativa, è possibile specificare qualsiasi URI valido come URI di reindirizzamento. Per le applicazioni native, questo valore non deve essere un URL reale. Per le applicazioni Web, l'URI di reindirizzamento deve essere un URI valido, perché specifica l'URL a cui vengono forniti i token.

Dopo aver registrato l'applicazione, verrà visualizzato l'ID applicazione (client) e l'ID directory (tenant) in Impostazioni:

Importante

Prendere nota di TenantId e ApplicationId. Questi valori saranno necessari per eseguire l'applicazione.

Screenshot showing the App registration page showing the Application ID and Tenant ID.

Per altre informazioni sulla registrazione di un'applicazione con Microsoft Entra ID, vedere Integrazione di applicazioni con Microsoft Entra ID.

Creare un segreto client

L'applicazione deve avere un segreto client per dimostrare la propria identità quando richiede un token. Per aggiungere il segreto client, seguire questa procedura.

  1. Passare alla registrazione dell'app nel portale di Azure se non si è già nella pagina.

  2. Selezionare Certificati e segreti nel menu a sinistra.

  3. In Segreti client selezionare Nuovo segreto client per creare un nuovo segreto.

    Screenshot showing the Certificates and secrets page with New client secret button selected.

  4. Specificare una descrizione per il segreto e scegliere l'intervallo di scadenza desiderato e quindi selezionare Aggiungi.

    Screenshot showing the Add a client secret page.

  5. Copiare immediatamente il valore del nuovo segreto in una posizione sicura. Il valore di riempimento viene visualizzato una sola volta.

    Screenshot showing the Client secrets section with the secret you added.

Autorizzazioni per l'API bus di servizio

Se l'applicazione è un'applicazione console, è necessario registrare un'applicazione nativa e aggiungere autorizzazioni API per Microsoft.ServiceBus al set di autorizzazioni necessarie. Le applicazioni native necessitano anche di un URI di reindirizzamento in Microsoft Entra ID, che funge da identificatore. L'URI non deve essere una destinazione di rete. Per questo esempio usare https://servicebus.microsoft.com, poiché questo URI è già usato nel codice di esempio.

Assegnare ruoli di Azure usando il portale di Azure

Assegnare uno dei ruoli bus di servizio all'entità servizio dell'applicazione nell'ambito desiderato (bus di servizio spazio dei nomi, gruppo di risorse, sottoscrizione). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Dopo aver definito il ruolo e il relativo ambito, è possibile testare questo comportamento con l'esempio in GitHub.

Autenticazione del client bus di servizio

Dopo aver registrato l'applicazione e aver concesso le autorizzazioni per inviare/ricevere dati in bus di servizio di Azure, è possibile autenticare il client con le credenziali del segreto client, che consentirà di effettuare richieste a bus di servizio di Azure.

Per un elenco degli scenari per i quali sono supportati l'acquisizione dei token, vedere la sezione Scenari del repository GitHub di Microsoft Authentication Library (MSAL) per .NET .

Usando la libreria Azure.Messaging.ServiceBus più recente, è possibile autenticare ServiceBusClient con clientSecretCredential, definito nella libreria Azure.Identity.

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Se si usano i pacchetti .NET meno recenti, vedere gli esempi roleBasedAccessControl nel repository di esempi di azure-service-bus.

Passaggi successivi

Per altre informazioni sulla messaggistica del bus di servizio, vedere gli argomenti seguenti.