Autorizzare le richieste alle risorse del Servizio Azure SignalR con le applicazioni di Microsoft Entra
Il servizio Azure SignalR supporta Microsoft Entra ID per autorizzare le richieste dalle applicazioni Microsoft Entra.
Questo articolo illustra come configurare la risorsa e i codici del servizio Azure SignalR per autorizzare le richieste alla risorsa da un'applicazione Microsoft Entra.
Registrare un'applicazione
Il primo passaggio consiste nel registrare un'applicazione Microsoft Entra:
Nel portale di Azure, cercare e selezionare Microsoft Entra ID.
In Gestisci, seleziona Registrazioni app.
Seleziona Nuova registrazione. Viene visualizzato il riquadro Registra un'applicazione.
In Nome, immettere un nome visualizzato per l'applicazione.
Selezionare Registra per confermare la registrazione.
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.
Per altre informazioni sulla registrazione di un'applicazione, vedere Guida di avvio rapido: Registrare un'applicazione con Microsoft Identity Platform.
Aggiungi credenziali
È possibile aggiungere sia certificati che segreti client (una stringa) come credenziali della registrazione dell'app client riservata.
Segreto client
L'applicazione deve avere un segreto client per dimostrare la propria identità quando richiede un token. Per creare un segreto client, seguire questa procedura:
In Gestisci, selezionare Certificati e segreti.
Nella scheda Segreti client selezionare Nuovo segreto client.
Immettere una descrizione per il segreto client e scegliere un'ora di scadenza.
Copiare il valore del segreto client e incollarlo in una posizione sicura.
Nota
Il segreto viene visualizzato una sola volta.
Certificate
È possibile caricare un certificato invece di creare un segreto client.
Per altre informazioni sull'aggiunta di credenziali, vedere Aggiungi credenziali.
Aggiungere assegnazioni di ruolo nel portale di Azure
I passaggi seguenti descrivono come assegnare un ruolo del server app SignalR a un'entità servizio (applicazione) 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 Utente, gruppo o entità servizioe quindi scegliere Selezionare membri.
Cercare e selezionare l'applicazione a cui si vuole assegnare il ruolo.
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
La procedura consigliata consiste nel configurare identità e credenziali nelle variabili di ambiente:
Variabile | Descrizione |
---|---|
AZURE_TENANT_ID |
L'ID tenant di Microsoft Entra. |
AZURE_CLIENT_ID |
L'ID client (applicazione) di una registrazione dell'app nel tenant. |
AZURE_CLIENT_SECRET |
Segreto client generato per la registrazione dell'app. |
AZURE_CLIENT_CERTIFICATE_PATH |
Percorso di un certificato e di una coppia di chiavi privata in formato PEM o PFX, che può autenticare la registrazione dell'app. |
AZURE_USERNAME |
Nome utente, noto anche come Nome entità utente (UPN) di un account utente Microsoft Entra. |
AZURE_PASSWORD |
Password dell'account utente Microsoft Entra. Una password non è supportata per gli account con l'autenticazione a più fattori abilitata. |
È possibile usare DefaultAzureCredential o EnvironmentCredential per configurare gli endpoint del servizio Azure SignalR. Ecco il codice per DefaultAzureCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
};
});
Ecco il codice per EnvironmentCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
};
});
Per informazioni sul funzionamento di DefaultAzureCredential
, vedere Classe DefaultAzureCredential.
Usare credenziali specifiche dell'endpoint
Nell'organizzazione potrebbe essere necessario utilizzare credenziali diverse per endpoint differenti.
In questo scenario è possibile usare ClientSecretCredential o ClientCertificateCredential:
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Associazioni del Servizio Azure SignalR in 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 segreto client, 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:
clientId
clientSecret
tenantId
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: