Titik akhir upstram
Fitur titik akhir upstream memungkinkan Azure SignalR Service mengirim pesan dan peristiwa koneksi ke sekumpulan titik akhir dalam mode tanpa server. Anda dapat menggunakan titik akhir upstream untuk memanggil metode hub dari klien dalam mode tanpa server untuk memberi tahu titik akhir saat koneksi klien tersambung atau terputus.
Catatan
Titik akhir upstream hanya dapat dikonfigurasi dalam mode tanpa server.
Pengaturan titik akhir upstram
Pengaturan titik akhir upstram terdiri dari daftar item yang sensitif terhadap pesanan:
- Template URL, yang menentukan ke mana pesan dikirim.
- Seperangkat aturan.
- Konfigurasi autentikasi.
Saat peristiwa diaktifkan, aturan item dicentang satu per satu secara berurutan. Pesan akan dikirim ke URL titik akhir upstream item pertama yang cocok.
Pengaturan template URL
Anda dapat membuat parameter URL titik akhir upstream untuk mendukung berbagai pola. Ada tiga parameter yang telah ditentukan sebelumnya:
Parameter yang sudah ditentukan sebelumnya | Deskripsi |
---|---|
{hub} | Hub merupakan sebuah konsep Azure SignalR Service. Hub adalah unit isolasi. Cakupan pengguna dan pengiriman pesan dibatasi ke sebuah hub. |
{kategory} | Kategori bisa menjadi salah satu nilai berikut:
|
{peristiwa} | Untuk kategori pesan, peristiwa adalah target yang ada dalam pesan permohonan yang dikirim klien. Untuk kategori koneksi, hanya tersambung dan terputus yang digunakan. |
Parameter yang telah ditentukan sebelumnya ini dapat digunakan dalam pola URL. Parameter akan diganti dengan nilai yang ditentukan saat Anda mengevaluasi URL titik akhir upstream. Contohnya:
http://host.com/{hub}/api/{category}/{event}
Ketika koneksi klien di hub "obrolan" tersambung, pesan akan dikirim ke URL ini:
http://host.com/chat/api/connections/connected
Ketika klien di hub "obrolan" memanggil metode hub broadcast
, pesan akan dikirimkan ke URL ini:
http://host.com/chat/api/messages/broadcast
Referensi rahasia Key Vault dalam pengaturan template URL
URL titik akhir upstream tidak dienkripsi. Anda dapat mengamankan titik akhir upstream sensitif menggunakan Key Vault dan mengaksesnya dengan identitas terkelola.
Untuk mengaktifkan identitas terkelola di instans layanan SignalR Anda dan memberinya akses Key Vault:
Pilih identitas yang ditetapkan sistem atau identitas yang ditetapkan pengguna. Lihat Cara menambahkan identitas terkelola di portal Azure.
Berikan izin baca rahasia untuk identitas terkelola dalam kebijakan Akses dalam Key Vault. Lihat Menetapkan kebijakan akses Key Vault menggunakan portal Azure
Ganti teks sensitif Anda dengan sintaks di bawah ini dalam Pola URL titik akhir upstream:
{@Microsoft.KeyVault(SecretUri=<secret-identity>)}
<secret-identity>
adalah URI bidang data lengkap dari rahasia di Key Vault, secara opsional termasuk versi, misalnya, https://myvault.vault.azure.net/secrets/mysecret/ atau https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931Misalnya, referensi lengkap akan terlihat seperti berikut ini:
{@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
URL titik akhir upstream ke Azure Function akan terlihat seperti berikut ini:
https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Catatan
Setiap 30 menit, atau setiap kali pengaturan titik akhir hulu atau perubahan identitas terkelola, layanan akan dibaca ulang konten rahasia. Anda dapat segera memicu pembaruan dengan mengubah pengaturan titik akhir upstream.
Pengaturan aturan
Anda dapat mengatur aturan hub, aturan kategori, dan aturan peristiwa secara terpisah. Aturan pencocokan mendukung tiga format:
- Gunakan tanda bintang (*) untuk mencocokkan peristiwa apa pun.
- Gunakan koma (,) untuk menggabungkan beberapa peristiwa. Misalnya,
connected, disconnected
mencocokkan peristiwa yang tersambung dan terputus. - Gunakan nama acara lengkap untuk mencocokkan peristiwa. Misalnya,
connected
mencocokkan peristiwa yang tersambung.
Catatan
Jika Anda menggunakan Azure Functions dengan pemicu SignalR, pemicu SignalR akan mengekspos satu titik akhir dalam format berikut: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
.
Anda dapat mengonfigurasi pengaturan template URL ke url ini dan mempertahankan pengaturan aturan ke default. Lihat integrasi SignalR Service untuk rincian tentang cara menemukan <Function_App_URL>
dan <API_KEY>
.
Pengaturan autentikasi
Anda dapat mengonfigurasi autentikasi untuk setiap pengaturan titik akhir upstram secara terpisah. Saat Anda mengonfigurasi autentikasi, token diatur dalam Authentication
header pesan upstream. Saat ini, Azure SignalR Service mendukung jenis autentikasi berikut:
None
ManagedIdentity
Saat Anda memilih ManagedIdentity
, Anda harus terlebih dahulu mengaktifkan identitas terkelola di Azure SignalR Service dan secara opsional, tentukan sumber daya. Lihat Identitas terkelola untuk Azure SignalR Service untuk detailnya.
Mengonfigurasi pengaturan titik akhir upstram melalui portal Azure
Catatan
Integrasi dengan Lingkungan App Service saat ini tidak didukung.
- Buka Azure SignalR Service.
- Pilih pengaturan.
- Alihkan Mode Layanan ke Tanpa Server.
- Tambahkan URL di bawah Pola URL Upstream.
- Pilih Aturan Hub untuk membuka Pengaturan Upstream.
- Ubah Aturan Hub, Aturan Peristiwa, dan Aturan Kategori dengan memasukkan nilai aturan di bidang terkait.
- Di bawah Autentikasi Upstream pilih
- Gunakan Identitas Terkelola. (Pastikan Anda telah mengaktifkan identitas terkelola)
- Pilih opsi apa pun di bawah Audiens dalam token yang dikeluarkan. Lihat Identitas terkelola untuk Azure SignalR Service untuk detailnya.
Mengonfigurasi pengaturan titik akhir upstream melalui templat Resource Manager
Untuk mengonfigurasi pengaturan titik akhir upstream dengan menggunakan templat Azure Resource Manager, atur upstream
properti di properties
properti . Cuplikan berikut menunjukkan cara mengatur upstream
properti untuk membuat dan memperbarui pengaturan titik akhir upstream.
{
"properties": {
"upstream": {
"templates": [
{
"UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
"EventPattern": "*",
"HubPattern": "*",
"CategoryPattern": "*",
"Auth": {
"Type": "ManagedIdentity",
"ManagedIdentity": {
"Resource": "<resource>"
}
}
}
]
}
}
}
Protokol tanpa server
Azure SignalR Service mengirim pesan ke titik akhir yang mengikuti protokol berikut. Anda dapat menggunakan pengikatan pemicu SignalR Service dengan Aplikasi Fungsi, yang menangani protokol ini untuk Anda.
Metode
POST
Header permintaan
Nama | Deskripsi |
---|---|
X-ASRS-Connection-Id | ID sambungan untuk sambungan klien. |
X-ASRS-Hub | Hub tempat koneksi klien berada. |
X-ASRS-Category | Kategori tempat pesan berada. |
X-ASRS-Event | Peristiwa di mana pesan tersebut berada. |
X-ASRS-Signature | Kode autentikasi pesan berbasis hash (HMAC) yang digunakan untuk validasi. Lihat Tanda tangan untuk detailnya. |
X-ASRS-User-Claims | Sekelompok klaim dari sambungan klien. |
X-ASRS-User-Id | Identitas pengguna klien yang mengirim pesan. |
X-ASRS-Client-Query | Kueri permintaan saat klien tersambung ke layanan. |
Autentikasi | Token opsional saat Anda menggunakan ManagedIdentity . |
Isi permintaan
Tersambung
Jenis-Konten: application/json
Terputus
Jenis-Konten: application/json
Nama | Tipe | Deskripsi |
---|---|---|
Kesalahan | string | Pesan kesalahan dari sambungan tertutup. Kosong ketika sambungan ditutup tanpa terjadi kesalahan. |
Pesan permohonan
Jenis-Konten: application/json
atau application/x-msgpack
Nama | Tipe | Deskripsi |
---|---|---|
IDPermohonan | string | Untai (karakter) opsional yang mewakili pesan permohonan. Temukan detailnya dalam Permohonan. |
Target | string | Sama seperti peristiwa dan sama dengan target dalam pesan permohonan. |
Argumen | Array objek | Array yang berisi argumen untuk diterapkan ke metode yang dimaksud dalam Target . |
Tanda Tangan
Layanan ini akan menghitung kode SHA256 untuk X-ASRS-Connection-Id
nilai tersebut dengan menggunakan kunci akses utama dan kunci akses sekunder sebagai kunci HMAC
. Layanan akan mengaturnya di X-ASRS-Signature
header saat membuat permintaan HTTP ke titik akhir upstream:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))