Saya mencoba untuk mendapatkan pegangan pada beberapa persyaratan dan mekanisme dan mencari tahu bagaimana mereka berhubungan satu sama lain atau bagaimana mereka tumpang tindih. Otentikasi teoritis aplikasi web dan aplikasi mobile adalah fokus. Fokus pada perbedaan yang tepat antara token otentikasi berbasis dan cookie otentikasi berbasis dan jika/bagaimana mereka berpotongan.
dasar http/mencerna dan sistem yang kompleks seperti oauth/aws auth tidak menarik minat saya
Saya memiliki beberapa poin yang saya ingin menempatkan di luar sana dan melihat jika mereka adalah benar.
Saya berharap saya tidak terlalu jauh melenceng dan saya bersyukur untuk bantuan!
Di Sesi Otentikasi berbasis Server melakukan semua angkat berat server-side. Secara garis besar klien mengotentikasi dengan kredensial dan menerima session_id
(yang dapat disimpan dalam cookie) dan menempel ini untuk setiap berikutnya keluar permintaan. Jadi ini bisa dianggap sebagai "tanda" karena itu adalah setara dengan satu set kredensial. Ada namun tidak ada yang mewah ini session_id
string. Itu hanya sebuah identifier dan server melakukan segala sesuatu yang lain. Itu adalah stateful. Rekan pengenal dengan akun pengguna (misalnya di memori atau di database). Hal ini dapat membatasi atau membatasi sesi ini untuk operasi tertentu atau jangka waktu tertentu dan dapat membatalkan jika ada masalah keamanan. Yang lebih penting ia bisa melakukan dan mengubah semua ini dengan cepat. Selain itu dapat login user's setiap langkah anda di situs(s). Kemungkinan kerugian yang buruk skala-kemampuan (terutama lebih dari satu server farm) dan luas penggunaan memori.
Di Token Otentikasi berbasis tidak ada sesi bertahan di sisi server (stateless). Langkah awal yang sama. Kredensial yang ditukar terhadap token yang kemudian melekat pada setiap permintaan berikutnya (hal ini juga dapat disimpan dalam cookie). Namun untuk tujuan mengurangi penggunaan memori, mudah di scale-kemampuan dan fleksibilitas total (token dapat ditukarkan dengan klien lain) string dengan semua informasi yang diperlukan adalah yang dikeluarkan (token) yang diperiksa setelah setiap permintaan yang dibuat oleh klien ke server. Ada sejumlah cara untuk menggunakan/membuat token:
Menggunakan hash misalnya mekanisme HMAC-SHA1
token = user_id|expiry_date|HMAC(user_id|expiry_date, k)
di mana user_id
dan expiry_date
yang dikirim dalam plaintext dengan hash yang dihasilkan terpasang (k
hanya tahu ke server).
token = AES(user_id|expiry_date, x)
dimana x
merupakan en-/kunci dekripsi.
token = RSA(user_id|expiry_date, kunci pribadi)
Sistem produksi biasanya lebih kompleks dari dua arketipe. Amazon misalnya menggunakan kedua mekanisme di website-nya. Juga hibrida dapat digunakan untuk mengeluarkan token seperti yang dijelaskan dalam 2 dan juga asosiasi sesi pengguna dengan pengguna pelacakan atau mungkin pembatalan dan masih mempertahankan fleksibilitas klien klasik token. Juga OAuth 2.0 menggunakan singkat dan spesifik pembawa-token dan hidup lebih lama-refresh token misalnya untuk mendapatkan pembawa-token.
Sumber:
HTTP adalah stateless, dan dalam rangka untuk memiliki disahkan negara, anda memerlukan beberapa jenis token yang digunakan untuk referensi informasi tentang pengguna. Sesi ini id biasanya dalam bentuk acak token yang dikirim sebagai nilai cookie. OAuth Akses Token digunakan untuk mengidentifikasi pengguna, dan ruang
dari sumber daya yang pengguna memiliki akses ke. Dalam aplikasi yang menggunakan OAuth single-sign on, sebuah token Akses OAuth biasanya dipertukarkan untuk sebuah session id yang dapat melacak lebih luas berbagai negara pengguna.
Dari seorang penyerang's perspektif, pembajakan id sesi, atau Token Akses OAuth, adalah sebagai baik sebagai username dan password, dan kadang-kadang bahkan lebih baik. Id sesi harus memiliki keamanan properties yang melindungi akun pengguna dari kompromi.
Dari pengembang's perspektif, tidak reinvent the wheel. Menggunakan session manager yang disediakan oleh platform anda, dan memastikan itu adalah dikonfigurasi untuk menyesuaikan diri dengan OWASP Sesi pedoman Pengelolaan.
Jadi, pada sesi otentikasi berbasis, untuk meningkatkan keamanan dalam mengakses sumber-sumber yang diperlukan: