Eseguire l'autenticazione di un'identità gestita con Microsoft Entra ID per accedere alle risorse di Hub eventi
Hub eventi di Azure supporta l'autenticazione di Microsoft Entra con identità gestite per le risorse di Azure. Le identità gestite per le risorse di Azure possono autorizzare l'accesso alle risorse di Hub eventi usando le credenziali di Microsoft Entra da applicazioni in esecuzione in macchine virtuali, app per le funzioni, set di scalabilità di macchine virtuali di Microsoft Azure e altri servizi. Usando le identità gestite per le risorse di Azure insieme all'autenticazione di Microsoft Entra, è possibile evitare di archiviare le credenziali con le applicazioni eseguite nel cloud. Questo articolo illustra come autorizzare l'accesso a un hub eventi usando un'identità gestita da una macchina virtuale di Azure.
Abilitare le identità gestite su una macchina virtuale
Prima di utilizzare le identità gestite per le risorse di Azure per accedere alle risorse di Hub eventi dalla macchina virtuale, abilitare le identità gestite per le risorse di Azure sulla macchina virtuale. Per informazioni su come abilitare le identità gestite per le risorse di Azure, vedere Configurare le identità gestite nelle macchine virtuali di Azure.
Concedere le autorizzazioni a un'identità gestita in Microsoft Entra ID
Per autorizzare una richiesta al servizio Hub eventi da un'identità gestita nell'applicazione, configurare innanzitutto le impostazioni di controllo degli accessi in base al ruolo di Azure per l'identità gestita. Hub eventi di Azure definisce i ruoli di Azure che includono le autorizzazioni per l'invio di eventi e la ricezione di eventi da Hub eventi. Quando un ruolo di Azure viene assegnato a un'identità gestita, all'identità gestita viene concesso l'accesso ai dati di Hub eventi nell'ambito appropriato. Per altre informazioni sull'assegnazione dei ruoli di Azure, vedere Eseguire l'autenticazione con Microsoft Entra ID per l'accesso alle risorse di Hub eventi.
Applicazione di esempio
La procedura descritta in questa sezione usa una semplice applicazione eseguita con un'identità gestita e accede alle risorse di Hub eventi.
Di seguito viene usata un'applicazione Web di esempio ospitata nel servizio app di Azure. Per istruzioni dettagliate sulla creazione di un'applicazione Web, vedere Creare un'app Web ASP.NET Core in Azure
Dopo aver creato l'applicazione, seguire questa procedura:
Passare a Impostazioni e selezionare Identità.
Selezionare lo stato su Sì.
Selezionare Salva per salvare l'impostazione.
Selezionare Sì nel messaggio informativo.
Dopo aver abilitato questa impostazione, viene creata una nuova identità del servizio nell'ID Microsoft Entra e configurata nell'host del servizio app.
Assegnare ora questa identità del servizio a un ruolo nell'ambito richiesto nelle risorse di Hub eventi.
Per assegnare ruoli di Azure usando il portale di Azure
Assegnare uno dei ruoli di Hub eventi all'identità gestita nell'ambito desiderato (spazio dei nomi di Hub eventi, gruppo di risorse, sottoscrizione). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Nota
Per un elenco dei servizi che supportano le identità gestite, vedere Servizi che supportano le identità gestite per le risorse di Azure.
Testare l'applicazione Web
- Creare uno spazio dei nomi di Hub eventi e un hub eventi.
- Distribuire l'app Web in Azure. Vedere la sezione a schede seguente per i collegamenti all'applicazione Web di esempio in GitHub.
- Assicurarsi che il SendReceive.aspx sia impostato come documento predefinito per l'app Web.
- Abilitare l'identità per l'app Web.
- Assegnare questa identità al ruolo Proprietario dati di Hub eventi a livello di spazio dei nomi o hub eventi.
- Eseguire l'applicazione Web, immettere il nome dello spazio dei nomi e il nome dell'hub eventi, un messaggio e selezionare Invia. Per ricevere l'evento, selezionare Ricevi.
È possibile trovare l'applicazione Web di esempio che invia e riceve i dati dalle risorse di Hub eventi nel repository GitHub.
Installare il pacchetto più recente da NuGet e iniziare a inviare eventi a Hub eventi usando EventHubProducerClient e ricevere eventi usando EventHubConsumerClient.
Nota
Per un esempio Java che usa un'identità gestita per pubblicare eventi in un hub eventi, vedere Pubblicare eventi con l'esempio di identità di Azure in GitHub.
protected async void btnSend_Click(object sender, EventArgs e)
{
await using (EventHubProducerClient producerClient = new EventHubProducerClient(txtNamespace.Text, txtEventHub.Text, new DefaultAzureCredential()))
{
// create a batch
using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
{
// add events to the batch. only one in this case.
eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(txtData.Text)));
// send the batch to the event hub
await producerClient.SendAsync(eventBatch);
}
txtOutput.Text = $"{DateTime.Now} - SENT{Environment.NewLine}{txtOutput.Text}";
}
}
protected async void btnReceive_Click(object sender, EventArgs e)
{
await using (var consumerClient = new EventHubConsumerClient(EventHubConsumerClient.DefaultConsumerGroupName, $"{txtNamespace.Text}.servicebus.windows.net", txtEventHub.Text, new DefaultAzureCredential()))
{
int eventsRead = 0;
try
{
using CancellationTokenSource cancellationSource = new CancellationTokenSource();
cancellationSource.CancelAfter(TimeSpan.FromSeconds(5));
await foreach (PartitionEvent partitionEvent in consumerClient.ReadEventsAsync(cancellationSource.Token))
{
txtOutput.Text = $"Event Read: { Encoding.UTF8.GetString(partitionEvent.Data.Body.ToArray()) }{ Environment.NewLine}" + txtOutput.Text;
eventsRead++;
}
}
catch (TaskCanceledException ex)
{
txtOutput.Text = $"Number of events read: {eventsRead}{ Environment.NewLine}" + txtOutput.Text;
}
}
}
Hub eventi per Kafka
È possibile usare le applicazioni Apache Kafka per inviare e ricevere messaggi da Hub eventi di Azure usando OAuth con identità gestita. Vedere l'esempio seguente in GitHub: Hub eventi per Kafka- inviare e ricevere messaggi usando l'identità gestita OAuth.
Esempi
- .NET.
- Per un esempio che usa il pacchetto di azure.Messaging.EventHubs più recente, vedere Pubblicare eventi con un'identità gestita
- Per un esempio che usa il pacchetto Legacy Microsoft.Azure.EventHubs, vedere questo esempio .NET in GitHub
- Java - Vedere gli esempi seguenti.
- Pubblicare eventi con l'esempio di identità di Azure in GitHub.
- Per informazioni su come usare il protocollo Apache Kafka per inviare e ricevere eventi da un hub eventi usando un'identità gestita, vedere l'esempio di Hub eventi per Kafka per inviare e ricevere messaggi usando un'identità gestita.
Contenuto correlato
- Vedere l'articolo seguente per informazioni sulle identità gestite per le risorse di Azure: Informazioni sulle identità gestite per le risorse di Azure.
- Vedere gli articoli correlati seguenti:
- Eseguire l'autenticazione delle a Hub eventi di Azure da un'applicazione usando Microsoft Entra ID
- Eseguire l'autenticazione delle richieste di Hub eventi tramite firme di accesso condiviso
- Autorizzare l'accesso alle risorse di Hub eventi usando Microsoft Entra ID
- Autorizzare l'accesso alle risorse di Hub eventi tramite firme di accesso condiviso