Sign inGet started

Mewajibkan koneksi terotorisasi

App key bersifat publik. Siapa pun yang dapat memuat halaman Anda dapat menggunakannya untuk membuka koneksi dan berlangganan ke channel publik.
Koneksi terotorisasi mewajibkan setiap koneksi baru membuktikan bahwa koneksi tersebut terotorisasi dalam 30 detik. Edge Realtime menutup koneksi yang tidak terotorisasi tepat waktu.

Wajibkan koneksi terotorisasi

Aktifkan Authorized connections untuk aplikasi di halaman Realtime apps. Anda juga dapat mengatur authorized_connections ke true melalui API Realtime. Pengaturan ini berlaku untuk setiap koneksi yang menggunakan salah satu key aplikasi.
Perbarui klien agar melakukan otorisasi sebelum Anda mengaktifkan pengaturan ini di production. Koneksi yang sudah terbuka sebelum Anda mengaktifkannya tetap terbuka, tetapi koneksi berikutnya dari klien lama gagal setelah batas waktu otorisasi.

Apa yang dianggap terotorisasi

Koneksi baru dimulai dalam keadaan tidak terotorisasi. Salah satu dari tindakan berikut mengotorisasinya:
  • Langganan private atau presence berhasil. Klien mengirim ID koneksi ke authEndpoint Anda, backend Anda menandatanganinya, dan edge memverifikasi tanda tangannya. Lihat Mengotorisasi channel.
  • signin() berhasil. Klien mengirim ID koneksi ke memberAuthEndpoint Anda dan menerima identitas member yang ditandatangani. Lihat Mengakhiri koneksi member untuk alur sign-in lengkap.
Kedua jalur membuktikan hal yang sama: sesuatu yang memegang app secret menjamin koneksi ini. Berlangganan ke channel publik tidak membuktikan apa pun dan tidak mengotorisasi apa pun.

Kasus khusus channel publik saja

Klien yang hanya berlangganan ke channel publik biasanya tidak menghubungi backend Anda. Setelah Anda mewajibkan koneksi terotorisasi, panggil signin() agar koneksi dapat terotorisasi tanpa langganan private:
import { BirdRealtime } from "@messagebird/realtime";

const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  memberAuthEndpoint: "/bird/auth/member",
});

await bird.signin();

const status = bird.subscribe("build-status");
status.bind("build-finished", (data) => render(data));
Panggil signin() sekali. Klien melakukan sign-in ulang setelah setiap reconnect karena identitas terikat pada koneksi. Kembalikan 403 Forbidden dari endpoint otorisasi member Anda jika pemanggil tidak boleh terhubung.
Jika aplikasi berlangganan ke channel private atau presence saat dimuat, langganan yang berhasil sudah mengotorisasi koneksi tersebut.

Apa yang dilihat klien jika tidak terotorisasi

Edge menutup koneksi dengan kode 4009 dan alasan Connection not authorized within timeout. Klien tidak mencoba ulang kode dalam rentang ini, sehingga koneksi memasuki status failed.
bird.connection.bind("error", ({ code, message }) => {
  if (code === 4009) console.warn(message);
});
Kode 4009 juga mengidentifikasi member yang koneksinya diakhiri oleh backend Anda. Periksa alasannya sebelum memilih status login atau signed-out. Lihat Mengakhiri koneksi member dan Siklus hidup koneksi dan reconnection.
Koneksi tidak dihitung dalam kuota koneksi aplikasi sampai koneksi tersebut terotorisasi.

Cakupan otorisasi

Mewajibkan koneksi terotorisasi mengontrol siapa yang dapat menahan koneksi tetap terbuka. Ini tidak menggantikan pemeriksaan otorisasi atau mengubah siapa yang dapat membaca channel:
  • Channel publik tetap publik untuk setiap koneksi terotorisasi. Jika event milik satu pelanggan, gunakan channel private dan periksa nama channel di endpoint Anda.
  • Siapa pun yang ditandatangani oleh endpoint auth Anda dianggap terotorisasi, sehingga endpoint yang permisif memberikan otorisasi sebebas app key.

Langkah selanjutnya

Sumber daya terkait

Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.

Coba praktiknya dan dapatkan ringkasan implementasi