Autorizzare le richieste alle risorse del Servizio Azure SignalR con identità gestite di Microsoft Entra
Il Servizio Azure SignalR supporta Microsoft Entra ID per autorizzare le richieste da identità gestite di Microsoft Entra.
Questo articolo illustra come configurare la risorsa e il codice del Servizio Azure SignalR per autorizzare le richieste alla risorsa da un'identità gestita.
Configurare le identità gestite
Il primo passaggio consiste nel configurare le identità gestite.
Questo esempio illustra come configurare un'identità gestita assegnata dal sistema in un servizio app usando il portale di Azure:
Accedere alle impostazioni dell'app nel portale di Azure nel gruppo Impostazioni nel riquadro di spostamento a sinistra.
Selezionare Identità.
All'interno della scheda Assegnata dal sistema impostare Stato su Attivato. Fare clic su Salva.
Per altre informazioni su come configurare in altri modi le identità gestite per il Servizio app di Azure e per Funzioni di Azure, vedere Come usare le identità gestite per il Servizio app e per Funzioni di Azure.
Per altre informazioni sulla configurazione delle identità gestite in una macchina virtuale di Azure, vedere Configurare le identità gestite nelle macchine virtuali di Azure
Aggiungere assegnazioni di ruolo nel portale di Azure
I passaggi seguenti descrivono come assegnare un ruolo del server app SignalR a un'identità assegnata dal sistema tramite una risorsa del Servizio Azure SignalR. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Nota
Un ruolo può essere assegnato a qualsiasi ambito, tra cui gruppo di gestione, sottoscrizione, gruppo di risorse o risorsa singola. Per altre informazioni sull'ambito, vedere Comprendere l'ambito per il controllo degli accessi in base al ruolo di Azure.
Nel portale di Azure passare alla risorsa Servizio Azure SignalR.
Seleziona Controllo di accesso (IAM).
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Nella scheda Ruolo, selezionare Server app SignalR.
Nella scheda Membri selezionare Identità gestita e quindi scegliere Seleziona membri.
Seleziona la tua sottoscrizione di Azure.
Selezionare Identità gestita assegnata dal sistema, cercare una macchina virtuale a cui assegnare il ruolo e quindi selezionarla.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Importante
La propagazione delle assegnazioni dei ruoli può richiedere fino a 30 minuti.
Per altre informazioni su come assegnare e gestire i ruoli di Azure, consultare questi articoli:
- Assegnare ruoli di Azure usando il portale di Azure
- Assegnare ruoli di Azure usando l'API REST
- Assegnare ruoli di Azure usando Azure PowerShell
- Assegnare ruoli di Azure usando l'interfaccia della riga di comando di Azure
- Assegnare ruoli di Azure tramite modelli di Azure Resource Manager
Configurazione dell'app
Server app
Usare un'identità assegnata dal sistema
Azure SignalR SDK supporta la stringa di connessione basata sull'identità. Se la configurazione è impostata nelle variabili di ambiente del server app, non è necessario ridistribuire il server app, ma semplicemente una modifica di configurazione per eseguire la migrazione dalla chiave di accesso all'identità del servizio gestito. Ad esempio, aggiornare la variabile di ambiente del server app da Azure__SignalR__ConnectionString
a Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
. In alternativa, impostare nel codice di inserimento delle dipendenze.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
È anche possibile usare DefaultAzureCredential o ManagedIdentityCredential per configurare gli endpoint del Servizio Azure SignalR. Si consiglia di usare direttamente ManagedIdentityCredential
.
Si noti che l'identità gestita assegnata dal sistema viene usata per impostazione predefinita, ma assicurarsi di non configurare le variabili di ambiente mantenute da EnvironmentCredential se si usa DefaultAzureCredential
. In caso contrario, il Servizio Azure SignalR esegue il fallback all'uso di EnvironmentCredential
per effettuare la richiesta, che in genere restituisce una risposta Unauthorized
.
Importante
Rimuovere Azure__SignalR__ConnectionString
se sono presenti variabili di ambiente in questo modo. Azure__SignalR__ConnectionString
verrà usato per creare gli ServiceEndpoint
predefiniti con prima priorità e il server app potrebbe usare la chiave di accesso in modo imprevisto.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Usare un'identità assegnata dall'utente
Specificare ClientId
durante la creazione dell'oggetto ManagedIdentityCredential
.
Importante
Usare l'ID client, non l'ID dell'oggetto (entità), anche se sono entrambi GUID.
Usare la stringa di connessione basata su identità.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
Oppure creare ServiceEndpoint
con ManagedIdentityCredential
.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
});
Associazioni del Servizio Azure SignalR in Funzioni di Azure
Le associazioni del Servizio Azure SignalR in Funzioni di Azure usano le impostazioni dell'applicazione nel portale o local.settings.json in locale per configurare un'identità gestita per accedere alle risorse del Servizio Azure SignalR.
Potrebbe essere necessario un gruppo di coppie chiave/valore per configurare un'identità. Le chiavi di tutte le coppie chiave/valore devono iniziare con un prefisso del nome di connessione (che per impostazione predefinita è AzureSignalRConnectionString
) e un separatore. Il separatore è un carattere di sottolineatura (__
) nel portale e due punti (:
) in locale. È possibile personalizzare il prefisso usando la proprietà di associazione ConnectionStringSetting
.
Usare un'identità assegnata dal sistema
Se si configura solo l'URI del servizio, usare la classe DefaultAzureCredential
. Questa classe è utile quando si vuole condividere la stessa configurazione negli ambienti di sviluppo locali e di Azure. Per informazioni sul funzionamento, vedere DefaultAzureCredential.
Nel portale di Azure usare l'esempio seguente per configurare DefaultAzureCredential
. Se non si configura nessuna di queste variabili di ambiente, l'identità assegnata dal sistema viene usata per l'autenticazione.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Ecco un esempio di configurazione di DefaultAzureCredential
nel file local.settings.json. Nell'ambito locale non esiste alcuna identità gestita. L'autenticazione tramite Visual Studio, l'interfaccia della riga di comando di Azure e gli account Azure PowerShell viene tentata in ordine.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Se si vuole usare un'identità assegnata dal sistema in modo indipendente e senza l'influenza di altre variabili di ambiente, impostare la chiave credential
con il prefisso del nome di connessione su managedidentity
. Ecco un esempio per le impostazioni dell'applicazione:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Usare un'identità assegnata dall'utente
Se si vuole usare un'identità assegnata dall'utente, è necessario assegnare clientId
oltre alle chiavi serviceUri
e credential
con il prefisso del nome di connessione. Ecco un esempio per le impostazioni dell'applicazione:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Passaggi successivi
Vedere gli articoli correlati seguenti: