Bagikan melalui


String koneksi di Azure SignalR Service

string koneksi berisi informasi tentang cara menyambungkan ke Azure SignalR Service. Dalam artikel ini, Anda mempelajari dasar-dasar string koneksi dan cara mengonfigurasinya di aplikasi Anda.

Penting

String koneksi mentah muncul dalam artikel ini hanya untuk tujuan demonstrasi.

string koneksi menyertakan informasi otorisasi yang diperlukan aplikasi Anda untuk mengakses Azure SignalR Service. Kunci akses di dalam string koneksi mirip dengan kata sandi root untuk layanan Anda. Di lingkungan produksi, selalu lindungi kunci akses Anda. Gunakan Azure Key Vault untuk mengelola dan memutar kunci Anda dengan aman dan mengamankan string koneksi Anda menggunakan ID Microsoft Entra dan mengotorisasi akses dengan ID Microsoft Entra.

Hindari mendistribusikan kunci akses ke pengguna lain, melakukan hard-coding, atau menyimpannya di mana saja dalam teks biasa yang dapat diakses orang lain. Putar kunci Anda jika Anda yakin bahwa kunci tersebut mungkin telah disusupi.

Apa itu string koneksi

Saat aplikasi perlu terhubung ke Azure SignalR Service, aplikasi memerlukan informasi berikut:

  • Titik akhir HTTP instans Azure SignalR Service
  • Cara mengautentikasi dengan titik akhir layanan

String koneksi berisi informasi tersebut.

Seperti apa tampilan string koneksi

string koneksi terdiri dari serangkaian pasangan kunci/nilai yang dipisahkan oleh titik koma (;). String menggunakan tanda sama dengan (=) untuk menyambungkan setiap kunci dan nilainya. Kunci tidak peka huruf besar/kecil.

String koneksi umum mungkin terlihat seperti contoh ini:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

string koneksi berisi:

  • Endpoint=https://<resource_name>.service.signalr.net: URL titik akhir sumber daya.
  • AccessKey=<access_key>: Kunci untuk mengautentikasi dengan layanan. Saat Anda menentukan kunci akses di string koneksi, Azure SignalR Service SDK menggunakannya untuk menghasilkan token yang divalidasi layanan.
  • Version: Versi string koneksi. Nilai defaultnya adalah 1.0.

Tabel berikut mencantumkan semua nama yang valid untuk pasangan kunci/nilai dalam string koneksi.

Kunci Deskripsi Wajib diisi Nilai default Contoh nilai
Endpoint URL instans Azure SignalR Service Anda. Ya Tidak berlaku https://foo.service.signalr.net
Port Port yang didengarkan instans Azure SignalR Service Anda. No 80 atau 443, tergantung pada skema URI titik akhir 8080
Version Versi string koneksi. No 1.0 1.0
ClientEndpoint URI proksi terbalik Anda, seperti Azure Application Gateway atau Azure API Management. No null https://foo.bar
AuthType Jenis Autentikasi. Secara default, layanan menggunakan AccessKey untuk mengotorisasi permintaan. Ini tidak peka huruf besar/kecil. No null Azure, , azure.msiazure.app

Menggunakan AccessKey

Layanan ini menggunakan metode autentikasi lokal saat AuthType diatur ke null.

Kunci Deskripsi Wajib diisi Nilai default Contoh nilai
AccessKey String kunci, dalam format Base64, untuk membangun token akses. Ya null ABCDEFGHIJKLMNOPQRSTUVWEXYZ0123456789+=/

Menggunakan ID Microsoft Entra

Layanan ini menggunakan metode autentikasi Microsoft Entra saat AuthType diatur ke azure, , azure.appatau azure.msi.

Kunci Deskripsi Wajib diisi Nilai default Contoh nilai
ClientId GUID aplikasi Azure atau identitas Azure. No null 00000000-0000-0000-0000-000000000000
TenantId GUID organisasi di MICROSOFT Entra ID. No null 00000000-0000-0000-0000-000000000000
ClientSecret Kata sandi instans aplikasi Azure. No null ***********************.****************
ClientCertPath Jalur absolut file sertifikat klien ke instans aplikasi Azure. No null /usr/local/cert/app.cert

Layanan ini menggunakan nilai yang berbeda TokenCredential untuk menghasilkan token Microsoft Entra, tergantung pada parameter yang Anda berikan:

Cara mendapatkan string koneksi

Anda dapat menggunakan portal Azure atau Azure CLI untuk mendapatkan string koneksi.

Portal Azure

Buka sumber daya Azure SignalR Service Anda di portal Azure. Tab Kunci memperlihatkan dua string koneksi (primer dan sekunder) dalam format berikut:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;Version=1.0;

Azure CLI

az signalr key list -g <resource_group> -n <resource_name>

Menyambungkan dengan aplikasi Microsoft Entra

Anda dapat menggunakan aplikasi Microsoft Entra untuk menyambungkan ke instans Azure SignalR Service Anda. Jika aplikasi memiliki izin yang tepat untuk mengakses Azure SignalR Service, aplikasi tidak memerlukan kunci akses.

Untuk menggunakan autentikasi Microsoft Entra, Anda perlu menghapus AccessKey dari string koneksi dan menambahkan AuthType=azure.app. Anda juga perlu menentukan kredensial aplikasi Microsoft Entra Anda, termasuk ID klien, rahasia klien, dan ID penyewa. String koneksi terlihat seperti contoh ini:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.app;ClientId=<client_id>;ClientSecret=<client_secret>;TenantId=<tenant_id>;Version=1.0;

Untuk informasi selengkapnya tentang cara mengautentikasi dengan menggunakan aplikasi Microsoft Entra, lihat Mengotorisasi permintaan ke sumber daya SignalR dengan aplikasi Microsoft Entra.

Mengautentikasi dengan identitas terkelola

Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna untuk mengautentikasi dengan Azure SignalR Service.

Untuk menggunakan identitas yang ditetapkan sistem, tambahkan AuthType=azure.msi ke string koneksi:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;Version=1.0;

Azure SignalR Service SDK secara otomatis menggunakan identitas server aplikasi Anda.

Untuk menggunakan identitas yang ditetapkan pengguna, sertakan ID klien identitas terkelola dalam string koneksi:

Endpoint=https://<resource_name>.service.signalr.net;AuthType=azure.msi;ClientId=<client_id>;Version=1.0;

Untuk informasi selengkapnya tentang cara mengonfigurasi identitas terkelola, lihat Mengotorisasi permintaan ke sumber daya SignalR dengan identitas terkelola Microsoft Entra.

Catatan

Kami sangat menyarankan Anda menggunakan identitas terkelola untuk mengautentikasi dengan Azure SignalR Service, karena identitas tersebut lebih aman daripada kunci akses. Jika Anda tidak menggunakan kunci akses untuk autentikasi, pertimbangkan untuk menonaktifkannya sepenuhnya di portal Azure (pilih Nonaktifkan Kunci>Akses Kunci).>

Jika Anda memutuskan untuk menggunakan kunci akses, kami sarankan Anda memutarnya secara teratur. Untuk informasi selengkapnya, lihat Memutar kunci akses untuk Azure SignalR Service.

Menggunakan generator string koneksi

Membangun string koneksi secara manual bisa rumit dan rawan kesalahan. Untuk menghindari kesalahan, Azure SignalR Service menyediakan generator string koneksi untuk membantu Anda menghasilkan string koneksi yang menyertakan identitas Microsoft Entra seperti clientId dan tenantId. Untuk menggunakan alat ini, buka instans Azure SignalR Service Anda di portal Azure dan pilih String koneksi dari menu sebelah kiri.

Cuplikan layar yang memperlihatkan generator string koneksi untuk Azure SignalR Service di portal Azure.

Pada halaman ini, Anda dapat memilih di antara jenis autentikasi (kunci akses, identitas terkelola, atau aplikasi Microsoft Entra) dan memasukkan informasi seperti titik akhir klien, ID klien, dan rahasia klien. Kemudian string koneksi dibuat secara otomatis. Anda dapat menyalinnya dan menggunakannya di aplikasi Anda.

Catatan

Informasi yang Anda masukkan tidak disimpan setelah Anda meninggalkan halaman. Anda perlu menyalin dan menyimpan string koneksi Anda untuk menggunakannya di aplikasi Anda.

Untuk informasi selengkapnya tentang bagaimana token akses dihasilkan dan divalidasi, lihat bagian Mengautentikasi melalui token Microsoft Entra di referensi REST API bidang data Azure SignalR Service.

Menyediakan titik akhir klien dan server

string koneksi berisi titik akhir HTTP untuk server aplikasi agar tersambung ke Azure SignalR Service. Server mengembalikan titik akhir HTTP ke klien dalam respons negosiasi, sehingga klien dapat terhubung ke layanan.

Di beberapa aplikasi, mungkin ada komponen tambahan di depan Azure SignalR Service. Semua koneksi klien harus melalui komponen tersebut terlebih dahulu. Misalnya, Azure Application Gateway adalah layanan umum yang menyediakan keamanan jaringan tambahan.

Dalam kasus seperti itu, klien perlu terhubung ke titik akhir yang berbeda dari Azure SignalR Service. Alih-alih mengganti titik akhir secara manual di sisi klien, Anda dapat menambahkan ClientEndpoint ke string koneksi:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ClientEndpoint=https://<url_to_app_gateway>;Version=1.0;

Server aplikasi mengembalikan respons terhadap permintaan negosiasi klien. Respons berisi URL titik akhir yang benar untuk disambungkan klien. Untuk informasi selengkapnya tentang koneksi klien, lihat Internal Azure SignalR Service.

Demikian pula, jika server mencoba membuat koneksi server atau memanggil REST API ke layanan, Azure SignalR Service mungkin juga berada di belakang layanan lain seperti Azure Application Gateway. Dalam hal ini, Anda dapat menggunakan ServerEndpoint untuk menentukan titik akhir aktual untuk koneksi server dan REST API:

Endpoint=https://<resource_name>.service.signalr.net;AccessKey=<access_key>;ServerEndpoint=https://<url_to_app_gateway>;Version=1.0;

Mengonfigurasi string koneksi di aplikasi Anda

String koneksi mentah muncul dalam artikel ini hanya untuk tujuan demonstrasi. Di lingkungan produksi, selalu lindungi kunci akses Anda. Gunakan Azure Key Vault untuk mengelola dan memutar kunci Anda dengan aman dan mengamankan string koneksi Anda menggunakan ID Microsoft Entra dan mengotorisasi akses dengan ID Microsoft Entra.

Ada dua cara untuk mengonfigurasi string koneksi di aplikasi Anda.

Anda dapat mengatur string koneksi saat memanggil AddAzureSignalR() API:

services.AddSignalR().AddAzureSignalR("<connection_string>");

Atau Anda dapat memanggil AddAzureSignalR() tanpa argumen apa pun. SDK layanan mengembalikan string koneksi dari konfigurasi bernama Azure:SignalR:ConnectionString di penyedia konfigurasi Anda.

Di lingkungan pengembangan lokal, konfigurasi disimpan dalam file (appsettings.json atau secrets.json) atau dalam variabel lingkungan. Anda dapat menggunakan salah satu cara berikut untuk mengonfigurasi string koneksi:

  • Gunakan manajer rahasia .NET (dotnet user-secrets set Azure:SignalR:ConnectionString "<connection_string>").
  • Atur variabel lingkungan bernama Azure__SignalR__ConnectionString ke string koneksi. Titik dua perlu diganti dengan garis bawah ganda di penyedia konfigurasi variabel lingkungan.

Di lingkungan produksi, Anda dapat menggunakan layanan Azure lainnya untuk mengelola konfigurasi dan rahasia, seperti Azure Key Vault dan App Configuration. Lihat dokumentasi mereka untuk mempelajari cara menyiapkan penyedia konfigurasi untuk layanan tersebut.

Catatan

Bahkan ketika Anda secara langsung mengatur string koneksi dengan menggunakan kode, kami tidak menyarankan Anda mengkodekan string koneksi secara permanen dalam kode sumber. Sebagai gantinya, baca string koneksi dari penyimpanan rahasia seperti Key Vault dan teruskan ke AddAzureSignalR().

Mengonfigurasi beberapa string koneksi

Azure SignalR Service memungkinkan server untuk terhubung ke beberapa titik akhir layanan secara bersamaan, sehingga dapat menangani lebih banyak koneksi yang berada di luar batas instans layanan. Saat satu instans layanan tidak berfungsi, Anda dapat menggunakan instans layanan lain sebagai cadangan. Untuk informasi selengkapnya tentang cara menggunakan beberapa instans, lihat Menskalakan SignalR Service dengan beberapa instans.

Ada dua cara untuk mengonfigurasi beberapa instans:

  • Melalui kode:

    services.AddSignalR().AddAzureSignalR(options =>
        {
            options.Endpoints = new ServiceEndpoint[]
            {
                new ServiceEndpoint("<connection_string_1>", name: "name_a"),
                new ServiceEndpoint("<connection_string_2>", name: "name_b", type: EndpointType.Primary),
                new ServiceEndpoint("<connection_string_3>", name: "name_c", type: EndpointType.Secondary),
            };
        });
    

    Anda dapat menetapkan nama dan jenis ke setiap titik akhir layanan sehingga Anda dapat membedakannya nanti.

  • Melalui konfigurasi:

    Anda dapat menggunakan penyedia konfigurasi yang didukung (misalnya, manajer rahasia, variabel lingkungan, atau brankas kunci) untuk menyimpan string koneksi. Berikut adalah contoh yang menggunakan manajer rahasia:

    dotnet user-secrets set Azure:SignalR:ConnectionString:name_a <connection_string_1>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_b:primary <connection_string_2>
    dotnet user-secrets set Azure:SignalR:ConnectionString:name_c:secondary <connection_string_3>
    

    Anda dapat menetapkan nama dan jenis ke setiap titik akhir dengan menggunakan nama konfigurasi yang berbeda dalam format berikut:

    Azure:SignalR:ConnectionString:<name>:<type>