Saya mencoba menerapkan sistem otentikasi/otorisasi menggunakan firebase dan saya berjuang dengan bagian terakhir dari alur otorisasi, yaitu, memungkinkan server saya untuk memverifikasi validitas token.

Ada dua cara untuk melakukan ini:

  1. Validasi token menggunakan Admin SDK firebase, di mana pada dasarnya server berkomunikasi dengan Firebase dan memvalidasi token (opsi aman)
  2. Validasi token menggunakan perpustakaan JWT pihak ketiga.

Pertanyaan saya berkaitan dengan opsi (2), yang menurut dokumentasi sangat layak. Pertanyaannya adalah, bagaimana ini aman? Semua yang termasuk dalam proses validasi token bersifat publik menurut ini:

Terakhir, pastikan bahwa token ID ditandatangani oleh kunci pribadi yang sesuai dengan klaim anak token. Ambil kunci publik dari https://www.googleapis .com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com dan gunakan perpustakaan JWT untuk memverifikasi tanda tangan. Menggunakan

Jika token bersifat publik, dan kunci untuk memvalidasinya bersifat publik, siapa yang menjamin bahwa token tersebut asli?

Mungkin ada sesuatu yang terkait dengan JWT yang saya lewatkan?

PS. Saya telah menerapkan opsi (1) dengan validasi jarak jauh, tetapi ini akan sangat memengaruhi kinerja aplikasi.

0
billias 17 April 2020, 20:15

1 menjawab

Jawaban Terbaik

Anda dapat memverifikasi validitas token dengan kunci publik, tetapi Anda hanya dapat membuat token dengan kunci pribadi .

Seperti yang tersirat dari nama mereka:

  • Kunci pribadi Anda hanya boleh digunakan di lingkungan tepercaya, seperti mesin pengembangan, server yang Anda kontrol, atau Cloud Functions. Jadi itu adalah satu-satunya tempat di mana Anda dapat menghasilkan token autentikasi.

  • Namun kunci publik dapat dibagikan dengan orang lain, yang berarti mereka dapat menggunakannya untuk memastikan bahwa token tersebut valid.

2
Frank van Puffelen 17 April 2020, 17:52