Saya memiliki aplikasi web ini yang akan menjadi semua teknologi sisi klien (HTML, CSS, JavaScript / AngularJS, dll ...). Aplikasi web ini akan berinteraksi dengan REST API untuk mengakses dan memodifikasi data. Saat ini belum diputuskan pada jenis sistem otentikasi apa yang akan digunakan oleh REST API.
Dari pemahaman saya, semua jenis sistem otentikasi API (API Keys, OAuth 1/2, dll ...) akan memiliki data tertentu yang perlu dirahasiakan jika akses dapat dikompromikan. Untuk Kunci API, kunci mereka sendiri harus dirahasiakan, karena OAuth 2 rahasia klien / token akses / token penyegaran perlu dirahasiakan, saya yakin beberapa dari 4 kunci yang terlibat dalam OAuth 1 perlu dirahasiakan (tidak terlalu banyak pengalaman dengan OAuth 1). Saya telah mencoba untuk berpikir jika ada cara untuk menyimpan hal-hal rahasia ini dalam aplikasi web sisi-klien murni tanpa lapisan tengah macam di sisi server.
Saya telah mencoba untuk memikirkan hal ini dan saya tidak dapat memikirkan tempat untuk melakukan itu. Maksud saya, saya tidak bisa menyimpannya dalam javascript karena siapa pun bisa melihat sumbernya atau membuka konsol dan mendapatkan datanya. Saya tidak 100% yakin seberapa aman localStorage dan jika pengguna dapat mengakses / memodifikasi data itu. Bahkan jika penyimpanan lokal aman, dua cara yang bisa saya pikirkan untuk memasukkan data ke dalamnya adalah tidak. Salah satu caranya adalah dengan hanya menyimpan data dalam kode sumber javascript yang merupakan hal paling tidak aman yang dapat saya pikirkan. Sekarang jika saya menggunakan sesuatu seperti OAuth 2 di mana api sisanya itu sendiri akan memberi saya token, itu masih belum seaman itu (lebih baik daripada opsi pertama) karena token itu akan dikembalikan sebagai teks biasa sehingga siapa saja yang dapat melihat permintaan yang dibuat komputer dapat melihat.
Apakah ada cara untuk memiliki aplikasi yang benar-benar menjalankan sisi klien dapat menyimpan potongan-potongan data rahasia dengan aman tanpa semacam lapisan tengah di sisi server?