Bagikan melalui


Pengikatan SignalR Service untuk Azure Functions

Kumpulan artikel ini menjelaskan cara mengautentikasi dan mengirim pesan real-time ke klien yang terhubung ke Azure SignalR Service dengan menggunakan pengikatan SignalR Service di Azure Functions. Runtime Azure Functions versi 2.x dan yang lebih tinggi mendukung pengikatan input dan output untuk SignalR Service.

Perbuatan Jenis
Menangani pesan dari SignalR Service Pengikatan pemicu
Mengembalikan URL titik akhir layanan dan token akses Pengikatan masukan
Mengirim pesan SignalR Service dan mengelola grup Pengikatan output

Menginstal ekstensi

Paket NuGet ekstensi yang Anda instal bergantung pada mode C# yang Anda gunakan di aplikasi fungsi Anda:

Functions dijalankan dalam proses pekerja C# yang terisolasi. Untuk mempelajari selengkapnya, lihat Panduan untuk menjalankan C# Azure Functions dalam proses pekerja yang terisolasi.

Tambahkan ekstensi ke proyek Anda dengan memasang Paket NuGet ini.

Memasang bundel

Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :

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

Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.

Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.

Menambahkan dependensi

Untuk menggunakan anotasi SignalR Service dalam fungsi Java, Anda perlu menambahkan dependensi ke artefak azure-functions-java-library-signalr (versi 1.0 atau lebih tinggi) ke file pom.xml Anda.

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

Koneksi

Anda dapat menggunakan identitas string koneksi atau Microsoft Entra untuk menyambungkan ke Azure SignalR Service.

String koneksi

Untuk petunjuk tentang cara mengambil string koneksi untuk Azure SignalR Service Anda, lihat String koneksi di Azure SignalR Service

String koneksi ini harus disimpan dalam pengaturan aplikasi dengan nama AzureSignalRConnectionString. Anda dapat menyesuaikan nama pengaturan aplikasi dengan connectionStringSetting properti konfigurasi pengikatan.

Koneksi berbasis identitas

Jika Anda menggunakan versi 1.7.0 atau yang lebih tinggi, alih-alih menggunakan string koneksi dengan rahasia, Anda dapat meminta aplikasi menggunakan identitas Microsoft Entra.

Pertama-tama, Anda harus memastikan identitas Microsoft Entra Anda memiliki peran Pemilik SignalR Service.

Kemudian Anda akan menentukan pengaturan dengan awalan AzureSignalRConnectionStringumum . Anda dapat menyesuaikan nama awalan dengan connectionStringSetting properti konfigurasi pengikatan.

Dalam mode ini, pengaturan menyertakan item berikut:

Properti Templat variabel lingkungan Deskripsi Wajib diisi Contoh nilai
URI Layanan AzureSignalRConnectionString__serviceUri URI titik akhir layanan Anda. Ketika Anda hanya mengonfigurasi "URI Layanan", ekstensi akan mencoba menggunakan jenis DefaultAzureCredential untuk mengautentikasi dengan layanan. Ya https://mysignalrsevice.service.signalr.net
Token Info Masuk AzureSignalRConnectionString__credential Mendefinisikan cara token harus diperoleh untuk koneksi. Pengaturan ini harus diatur ke managedidentity jika Azure Function yang Anda sebarkan berniat menggunakan autentikasi identitas terkelola. Nilai ini hanya valid ketika identitas terkelola tersedia di lingkungan hosting. Tidak. identitasterkelola
ID klien AzureSignalRConnectionString__clientId Ketika credential diatur ke managedidentity, properti ini dapat diatur untuk menentukan identitas yang ditetapkan pengguna yang akan digunakan saat mendapatkan token. Properti menerima ID klien yang sesuai dengan identitas yang ditetapkan pengguna yang ditetapkan ke aplikasi. Tidak valid untuk menentukan ID Sumber Daya dan ID klien. Jika tidak ditentukan, identitas yang ditetapkan sistem akan digunakan. Properti ini digunakan secara berbeda dalam skenario pengembangan lokal, kapan credential tidak boleh diatur. Tidak. 00000000-0000-0000-0000-000000000000
ID Sumber Daya AzureSignalRConnectionString__managedIdentityResourceId Ketika credential diatur ke managedidentity, properti ini dapat diatur untuk menentukan Pengidentifikasi sumber daya yang akan digunakan saat mendapatkan token. Properti menerima pengidentifikasi sumber daya yang sesuai dengan ID sumber daya identitas terkelola yang ditentukan pengguna. Tidak valid untuk menentukan ID sumber daya dan ID klien. Jika tidak ditentukan, identitas yang ditetapkan sistem akan digunakan. Properti ini digunakan secara berbeda dalam skenario pengembangan lokal, kapan credential tidak boleh diatur. Tidak. /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice

Catatan

Saat menggunakan local.settings.json file di lokal, Azure App Configuration, atau Key Vault untuk menyediakan pengaturan untuk koneksi berbasis identitas, ganti __ dengan : dalam nama pengaturan untuk memastikan nama diselesaikan dengan benar.

Contohnya,AzureSignalRConnectionString:serviceUri.

Pengaturan beberapa titik akhir

Anda juga dapat mengonfigurasi beberapa titik akhir dan menentukan pengaturan identitas per titik akhir.

Dalam hal ini, awali pengaturan Anda dengan Azure__SignalR__Endpoints__{endpointName}. {endpointName} adalah nama arbitrer yang ditetapkan oleh Anda untuk mengaitkan grup pengaturan ke titik akhir layanan. Awalan Azure__SignalR__Endpoints__{endpointName} tidak dapat disesuaikan dengan connectionStringSetting properti.

Properti Templat variabel lingkungan Deskripsi Wajib diisi Contoh nilai
URI Layanan Azure__SignalR__Endpoints__{endpointName}__serviceUri URI titik akhir layanan Anda. Ketika Anda hanya mengonfigurasi "URI Layanan", ekstensi akan mencoba menggunakan jenis DefaultAzureCredential untuk mengautentikasi dengan layanan. Ya https://mysignalrsevice1.service.signalr.net
Jenis titik akhir Azure__SignalR__Endpoints__{endpointName}__type Menunjukkan apakah titik akhir layanan adalah primer atau sekunder. Jika tidak ditentukan, defaultnya adalah Primary. Nilai yang valid adalah Primary dan Secondary, tidak peka huruf besar/kecil. Tidak. Secondary
Token Info Masuk Azure__SignalR__Endpoints__{endpointName}__credential Mendefinisikan cara token harus diperoleh untuk koneksi. Pengaturan ini harus diatur ke managedidentity jika Azure Function yang Anda sebarkan berniat menggunakan autentikasi identitas terkelola. Nilai ini hanya valid ketika identitas terkelola tersedia di lingkungan hosting. Tidak. identitasterkelola
ID klien Azure__SignalR__Endpoints__{endpointName}__clientId Ketika credential diatur ke managedidentity, properti ini dapat diatur untuk menentukan identitas yang ditetapkan pengguna yang akan digunakan saat mendapatkan token. Properti menerima ID klien yang sesuai dengan identitas yang ditetapkan pengguna yang ditetapkan ke aplikasi. Tidak valid untuk menentukan ID Sumber Daya dan ID klien. Jika tidak ditentukan, identitas yang ditetapkan sistem akan digunakan. Properti ini digunakan secara berbeda dalam skenario pengembangan lokal, kapan credential tidak boleh diatur. Tidak. 00000000-0000-0000-0000-000000000000
ID Sumber Daya Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId Ketika credential diatur ke managedidentity, properti ini dapat diatur untuk menentukan Pengidentifikasi sumber daya yang akan digunakan saat mendapatkan token. Properti menerima pengidentifikasi sumber daya yang sesuai dengan ID sumber daya identitas terkelola yang ditentukan pengguna. Tidak valid untuk menentukan ID sumber daya dan ID klien. Jika tidak ditentukan, identitas yang ditetapkan sistem akan digunakan. Properti ini digunakan secara berbeda dalam skenario pengembangan lokal, kapan credential tidak boleh diatur. Tidak. /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity

Untuk informasi selengkapnya tentang beberapa titik akhir, lihat Menskalakan SignalR Service dengan beberapa instans

Untuk keamanan yang optimal, aplikasi fungsi Anda harus menggunakan identitas terkelola saat menyambungkan ke layanan Azure SignalR alih-alih menggunakan string koneksi, yang berisi kunci rahasia bersama. Untuk informasi selengkapnya, lihat Mengotorisasi permintaan ke sumber daya Azure SignalR Service dengan identitas terkelola Microsoft Entra.

Langkah berikutnya

Untuk detail tentang cara mengonfigurasi dan menggunakan SignalR Service dan Azure Functions bersama-sama, lihat pengembangan dan konfigurasi Azure Functions dengan Azure SignalR Service.