Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il servizio Azure SignalR supporta l'ID Microsoft Entra per autorizzare le richieste con le applicazioni Microsoft Entra.
Questo articolo illustra come configurare la risorsa e il codice per autenticare le richieste alla risorsa usando un'applicazione Microsoft Entra.
Registrare un'applicazione in Microsoft Entra ID
Il primo passaggio consiste nel registrare un'applicazione in Microsoft Entra ID:
Dopo aver registrato l'applicazione, è possibile trovare i valori ID applicazione (client) e ID directory (tenant) nella pagina di panoramica dell'applicazione. Questi GUID possono essere utili nei passaggi seguenti.
Aggiungi credenziali
Dopo aver registrato un'app, è possibile aggiungere certificati, segreti client (stringa) o credenziali di identità federate come credenziali per la registrazione dell'app client riservata. Le credenziali consentono all'applicazione di eseguire l'autenticazione come se stessa, senza alcuna interazione da un utente in fase di esecuzione e vengono usate dalle applicazioni client riservate che accedono a un'API Web.
Aggiungere assegnazioni di ruolo nel portale di Azure
I passaggi seguenti descrivono come assegnare un ruolo del server app SignalR a un'entità servizio o una identità gestita per una risorsa del servizio Azure SignalR. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Nota
È possibile assegnare un ruolo a qualsiasi ambito, tra cui gruppo di gestione, sottoscrizione, gruppo di risorse o singola risorsa. 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.
Nel riquadro sinistro, seleziona Controllo di accesso (IAM).
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Nella scheda Ruolo, selezionare Server app SignalR. Altri ruoli predefiniti del servizio Azure SignalR dipendono dallo scenario in uso.
Ruolo Descrizione Caso d'uso SignalR App Server Accesso alle API che creano connessioni server e generano chiavi. Usato più comunemente per un server app con una risorsa Azure SignalR in esecuzione in modalità predefinita. proprietario di Servizio SignalR Accesso completo a tutte le API del piano dati, incluse le API REST, le API che creano connessioni server e le API che generano chiavi/token. Usato per un server di negoziazione con una risorsa del servizio Azure SignalR in esecuzione in modalità serverless. Richiede sia le autorizzazioni dell'API REST che le autorizzazioni api di autenticazione. Proprietario dell'API REST di SignalR Accesso completo alle API REST del piano dati. Usato per Azure SignalR Management SDK per gestire connessioni e gruppi, ma non esegue connessioni server o gestisce le richieste di negoziazione. Lettore API REST del servizio SignalR Accesso in sola lettura alle API REST del piano dati. Usato quando si scrive uno strumento di monitoraggio che chiama le API REST di sola lettura. Seleziona Avanti.
Per l'applicazione Microsoft Entra:
- Nella riga Assegna accesso a selezionare Utente, gruppo o entità servizio.
- Nella riga Membri scegliere seleziona membri e quindi scegliere l'identità nella finestra popup.
Per l'identità gestita per le risorse di Azure:
- Nella riga Assegna accesso a selezionare Identità gestita.
- Nella riga Membri scegliere seleziona membri e quindi scegliere l'applicazione nella finestra popup.
Seleziona Avanti.
Esamina l'incarico e quindi seleziona Rivedi + assegna per confermare l'assegnazione del ruolo.
Importante
La propagazione delle assegnazioni di ruolo appena aggiunte potrebbe richiedere fino a 30 minuti.
Per altre informazioni su come assegnare e gestire i ruoli di Azure, vedere:
- 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 usando i modelli di Azure Resource Manager
Configurare l'SDK del server app Microsoft.Azure.SignalR per C#
SDK del server Azure SignalR per C#
Azure SignalR SERVER SDK sfrutta la libreria Azure.Identity per generare token per la connessione alle risorse. Fare clic per esplorare gli utilizzi dettagliati.
Nota
Il tenantId deve corrispondere al tenantId del tenant in cui si trova la risorsa SignalR.
Usare l'applicazione Microsoft Entra con il certificato
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Usare l'applicazione Microsoft Entra con chiave cliente
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Usare l'applicazione Microsoft Entra con l'identità federata
Nel caso dell'organizzazione sia disabilitato l'utilizzo del segreto client o del certificato, è possibile configurare l'applicazione in modo che consideri attendibile un'identità gestita per l'autenticazione.
Per altre informazioni, vedere Configurare un'applicazione per considerare attendibile un'identità gestita (anteprima).
Nota
Configurare un'applicazione in modo che consideri attendibile un'identità gestita è una funzionalità di anteprima.
services.AddSignalR().AddAzureSignalR(option =>
{
var msiCredential = new ManagedIdentityCredential("msiClientId");
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Entra ID US Government: api://AzureADTokenExchangeUSGov
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
return response.Token;
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Questa credenziale userà l'identità gestita assegnata dall'utente per generare un clientAssertion e usarlo per ottenere un clientToken per l'autenticazione.
appClientId e tenantId devono essere l'applicazione aziendale di cui è stato effettuato il provisioning nel tenant della risorsa SignalR.
Usare più endpoint
Le credenziali possono essere diverse per endpoint diversi.
In questo esempio, Azure SignalR SDK utilizzerà il client secret per connettersi a resource1 e utilizzerà il certificato per connettersi a resource2.
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Altri esempi sono disponibili in questo collegamento di esempio
Associazioni del servizio Azure SignalR nelle funzioni di Azure
Le associazioni del servizio Azure SignalR in Funzioni di Azure usano le impostazioni applicazione nel portale o local.settings.json in locale per configurare le identità dell'applicazione Microsoft Entra per l'accesso alle risorse del Servizio Azure SignalR.
Prima di tutto, è necessario specificare l'URI del Servizio Azure SignalR. La chiave dell'URI del servizio è serviceUri. Inizia con un prefisso del nome di connessione (che per impostazione predefinita è AzureSignalRConnectionString) e un separatore. Il separatore è un carattere di sottolineatura (__) nel portale di Azure e due punti (:) nel file local.settings.json. È possibile personalizzare il nome della connessione usando la proprietà di associazione ConnectionStringSetting. Continuare a leggere per trovare l'esempio.
Scegliere quindi se configurare l'identità dell'applicazione Microsoft Entra in variabili di ambiente predefinite o in variabili specificate da SignalR.
Configurare un'identità nelle variabili di ambiente predefinite
Per l'elenco delle variabili di ambiente predefinite, vedere Variabili di ambiente. Quando si dispone di più servizi, è consigliabile usare la stessa identità dell'applicazione, in modo che non sia necessario configurare l'identità per ogni servizio. Altri servizi possono anche usare queste variabili di ambiente, in base alle impostazioni di tali servizi.
Ad esempio, per usare le credenziali del client segreto, configurare l'identità come indicato di seguito nel file local.settings.json:
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AZURE_TENANT_ID": "..."
}
}
Nel portale di Azure, aggiungere le impostazioni come indicato di seguito:
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Configurare un'identità nelle variabili specificate da SignalR
Le variabili specificate da SignalR condividono lo stesso prefisso di chiave con la chiave serviceUri. Ecco l'elenco delle variabili che è possibile usare:
clientIdclientSecrettenantId
Seguono gli esempi per utilizzare le credenziali del segreto client nel file local.settings.json:
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"<CONNECTION_NAME_PREFIX>:clientId": "...",
"<CONNECTION_NAME_PREFIX>:clientSecret": "...",
"<CONNECTION_NAME_PREFIX>:tenantId": "..."
}
}
Nel portale di Azure, aggiungere le impostazioni come indicato di seguito:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...
Passaggi successivi
Vedere gli articoli correlati seguenti: