Condividi tramite


associazioni SignalR Service per Azure Functions

Questo set di articoli illustra come autenticare e inviare messaggi in tempo reale ai client connessi a Azure SignalR Service usando associazioni SignalR Service in Azure Functions. Azure Functions runtime versione 2.x e successive supporta le associazioni di input e output per SignalR Service.

Azione TIPO
Gestire i messaggi da SignalR Service Associazione di trigger
Restituire l'URL dell'endpoint di servizio e il token di accesso Associazione di input
Inviare messaggi SignalR Service e gestire i gruppi Associazione di output

Installare l'estensione

Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:

Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guide per l'esecuzione di Azure Functions C# in un processo di lavoro isolato.

Aggiungere l'estensione al progetto installando questo pacchetto NuGet.

Installare il bundle

Per poter usare questa estensione di associazione nell'app, assicurarsi che il file host.json nella radice del progetto contenga questo extensionBundle riferimento:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

In questo esempio, il valore version indica all'host delle Funzioni di [4.0.0, 5.0.0) di usare una versione del pacchetto che sia almeno 4.0.0 ma inferiore a 5.0.0, includendo tutte le versioni comprese nella serie 4.x. Questa notazione mantiene l'app nella versione secondaria più recente disponibile del bundle di estensione v4.x.

Quando possibile, è consigliabile usare la versione principale del bundle di estensione più recente e consentire al runtime di mantenere automaticamente la versione secondaria più recente. È possibile visualizzare il contenuto del bundle più recente nella pagina di rilascio extension bundle. Per altre informazioni, vedere bundle di estensioni Azure Functions.

Dipendenza dell'app

Per usare le annotazioni SignalR Service nelle funzioni di Java, è necessario aggiungere una dipendenza all'elemento azure-functions-java-library-signalr (versione 1.0 o successiva) al file pom.xml.

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-signalr</artifactId>
    <version>1.0.0</version>
</dependency>

Connessioni

È possibile usare connection string o Microsoft Entra identity per connettersi a Azure SignalR Service.

Stringa di connessione

Per istruzioni su come recuperare il connection string per la Azure SignalR Service, vedere stringhe Connection in Azure SignalR Service

Questo connection string deve essere archiviato in un'impostazione dell'applicazione con un nome AzureSignalRConnectionString. È possibile personalizzare il nome dell'impostazione dell'applicazione con la connectionStringSetting proprietà della configurazione dell'associazione.

Connessioni basate su identità

Se si usa la versione 1.7.0 o successiva, invece di usare un connection string con un segreto, è possibile che l'app usi un'identità Microsoft Entra.

Prima di tutto, è necessario assicurarsi che l'identità Microsoft Entra abbia il ruolo SignalR Service Proprietario.

Definire quindi le impostazioni con un prefisso AzureSignalRConnectionStringcomune. È possibile personalizzare il nome del prefisso con la connectionStringSetting proprietà della configurazione dell'associazione.

In questa modalità, le impostazioni includono gli elementi seguenti:

Proprietà Modello di variabile di ambiente Descrizione Richiesto Valore di esempio
URI del servizio AzureSignalRConnectionString__serviceUri URI dell'endpoint di servizio. Quando si configura solo l'URI del servizio, le estensioni tentano di usare il tipo DefaultAzureCredential per l'autenticazione con il servizio. https://mysignalrsevice.service.signalr.net
Credenziali token AzureSignalRConnectionString__credential Definisce come ottenere un token per la connessione. Questa impostazione deve essere impostata su managedidentity se la funzione Azure distribuita intende usare l'autenticazione dell'identità gestita. Questo valore è valido solo quando un'identità gestita è disponibile nell'ambiente di hosting. NO managedidentity
ID client AzureSignalRConnectionString__clientId Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un ID client corrispondente a un'identità assegnata dall'utente assegnata all'applicazione. Non è valido specificare sia un ID risorsa che un ID client. Se non specificata, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. NO 00000000-0000-0000-0000-000000000000
ID risorsa AzureSignalRConnectionString__managedIdentityResourceId Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identificatore della risorsa da usare quando si ottiene un token. La proprietà accetta un identificatore di risorsa corrispondente all'ID risorsa dell'identità gestita definita dall'utente. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. NO /subscriptions/000000000-0000-0000-0000-00000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice

Nota

Quando si usa il file local.settings.json in locale, Azure App Configuration o Key Vault per fornire impostazioni per le connessioni basate sull'identità, sostituire __ con : nel nome dell'impostazione per assicurarsi che i nomi vengano risolti correttamente.

Ad esempio: AzureSignalRConnectionString:serviceUri.

Impostazione di più endpoint

È anche possibile configurare più endpoint e specificare le impostazioni di identità per endpoint.

In questo caso, anteporre le impostazioni a Azure__SignalR__Endpoints__{endpointName}. {endpointName} è un nome arbitrario assegnato dall'utente per associare un gruppo di impostazioni a un endpoint di servizio. Non è possibile personalizzare il prefisso Azure__SignalR__Endpoints__{endpointName} in base connectionStringSetting alla proprietà .

Proprietà Modello di variabile di ambiente Descrizione Richiesto Valore di esempio
URI del servizio Azure__SignalR__Endpoints__{endpointName}__serviceUri URI dell'endpoint del servizio. Quando si configura solo l'URI del servizio, le estensioni tentano di usare il tipo DefaultAzureCredential per l'autenticazione con il servizio. https://mysignalrsevice1.service.signalr.net
Tipo di endpoint Azure__SignalR__Endpoints__{endpointName}__type Indica se l'endpoint del servizio è primario o secondario. Se non specificato, per impostazione predefinita viene impostato su Primary. I valori validi sono Primary e Secondary, senza distinzione tra maiuscole e minuscole. NO Secondary
Credenziali token Azure__SignalR__Endpoints__{endpointName}__credential Definisce come ottenere un token per la connessione. Questa impostazione deve essere impostata su managedidentity se la funzione Azure distribuita intende usare l'autenticazione dell'identità gestita. Questo valore è valido solo quando un'identità gestita è disponibile nell'ambiente di hosting. NO managedidentity
ID client Azure__SignalR__Endpoints__{endpointName}__clientId Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un ID client corrispondente a un'identità assegnata dall'utente assegnata all'applicazione. Non è valido specificare sia un ID risorsa che un ID client. Se non specificata, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. NO 00000000-0000-0000-0000-000000000000
ID risorsa Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identificatore della risorsa da usare quando si ottiene un token. La proprietà accetta un identificatore di risorsa corrispondente all'ID risorsa dell'identità gestita definita dall'utente. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. NO /subscriptions/000000000-0000-0000-0000-00000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity

Per altre informazioni su più endpoint, vedere Scale SignalR Service con più istanze

Per una sicurezza ottimale, l'app per le funzioni deve usare le identità gestite per la connessione al servizio SignalR Azure anziché usare un connection string, che contiene una chiave privata condivisa. Per altre informazioni, vedere Autorizzare le richieste per Azure SignalR Service risorse con identità gestite Microsoft Entra.

Passaggi successivi

Per informazioni dettagliate su come configurare e usare SignalR Service e Azure Functions insieme, vedere Azure Functions sviluppo e configurazione con Azure SignalR Service.