Show Firebase Auth menyediakan pengelolaan cookie sesi sisi server untuk situs tradisional yang bergantung pada cookie sesi. Solusi ini memiliki beberapa keunggulan dibandingkan dengan token ID sisi klien yang berumur pendek, yang mungkin harus selalu memerlukan mekanisme pengalihan untuk memperbarui cookie sesi pada akhir masa berlakunya:
LoginBuat agar pengguna login di halaman login menggunakan SDK klien, dengan asumsi bahwa aplikasi menggunakan cookie sisi server
Membuat cookie sesiEndpoint HTTP diperlukan untuk membuat cookie sesi setelah token ID dibuat. Kirim token ke endpoint, dengan menetapkan waktu durasi sesi kustom menggunakan Firebase Admin SDK. Tindakan yang sepantasnya harus dilakukan untuk mencegah serangan pemalsuan permintaan lintas situs (CSRF).
Untuk aplikasi yang sensitif,
Memverifikasi cookie sesi dan memeriksa izinSetelah login, semua bagian situs yang dilindungi akses harus memeriksa cookie sesi dan memverifikasinya sebelum menyalurkan konten yang dibatasi berdasarkan beberapa aturan keamanan.
Verifikasi cookie sesi menggunakan verifySessionCookie API Admin SDK. Ini adalah operasi dengan overhead rendah. Kueri sertifikat publik akan dibuat dan disimpan dalam cache sampai masa berlakunya habis. Verifikasi cookie sesi dapat dilakukan dengan sertifikat publik yang disimpan dalam cache tanpa permintaan jaringan tambahan. Jika cookie tidak valid, pastikan cookie tersebut dihapus, dan minta pengguna untuk login kembali. Tersedia opsi tambahan untuk memeriksa pencabutan sesi. Perlu diperhatikan bahwa tindakan ini akan menambahkan permintaan jaringan tambahan setiap kali cookie sesi diverifikasi. Untuk alasan keamanan, cookie sesi Firebase tidak dapat digunakan dengan layanan Firebase lainnya karena periode validitas khusus cookie tersebut, yang dapat disetel ke durasi maksimum yakni 2 minggu. Semua aplikasi yang menggunakan cookie sisi server diharapkan menerapkan pemeriksaan izin setelah memverifikasi cookie ini pada sisi server.
. LogoutKetika pengguna logout dari sisi klien, tangani hal tersebut di sisi server melalui endpoint. Permintaan POST/GET akan menyebabkan cookie sesi dihapus. Perlu diperhatikan bahwa meskipun dihapus, cookie sesi akan tetap aktif hingga masa berlakunya habis.
Jika API pencabutan dipanggil, sesi akan dicabut, begitu juga dengan semua sesi lain pengguna tersebut. Dengan begitu, proses login baru harus dilakukan. Untuk aplikasi yang sensitif, sebaiknya gunakan durasi sesi yang lebih pendek.
Memverifikasi cookie sesi menggunakan library JWT pihak ketigaJika backend Anda menggunakan bahasa yang tidak didukung Firebase Admin SDK, Anda masih dapat memverifikasi cookie sesi. Pertama-tama, temukan library JWT pihak ketiga untuk bahasa Anda. Kemudian, verifikasi header, payload, dan tanda tangan cookie sesi. Verifikasikan bahwa header cookie sesi sesuai dengan batasan berikut:
Verifikasikan bahwa payload cookie sesi sesuai dengan batasan berikut:
Terakhir, pastikan cookie sesi telah ditandatangani dengan kunci pribadi yang sesuai dengan klaim kid token. Dapatkan kunci publik dari Jika semua verifikasi di atas berhasil, Anda dapat menggunakan subjek ( Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Last updated 2022-08-06 UTC. [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Informasi yang saya butuhkan tidak ada" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Terlalu rumit/langkahnya terlalu banyak" },{ "type": "thumb-down", "id": "outOfDate", "label":"Sudah usang" },{ "type": "thumb-down", "id": "translationIssue", "label":"Masalah terjemahan" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Masalah kode / contoh" },{ "type": "thumb-down", "id": "otherDown", "label":"Lainnya" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Mudah dipahami" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Memecahkan masalah saya" },{ "type": "thumb-up", "id": "otherUp", "label":"Lainnya" }] |