‫Instruktur: Jadi kami telah menyiapkan model
‫pengguna kami untuk menyelamatkan pengguna dengan kata sandi yang aman.
‫Dan selanjutnya, kita akan
‫benar-benar menerapkan otentikasi dan otorisasi pengguna.
‫Jadi secara sederhana, seluruh alur kerja pengguna
‫yang masuk dan memungkinkan mereka untuk
‫berinteraksi dengan sumber daya tertentu yang dilindungi yang
‫tidak dapat diakses oleh pengguna yang tidak masuk.
‫Sekarang ada banyak metode otentikasi di luar
‫sana, tetapi yang akan kita gunakan adalah pendekatan yang
‫sangat modern, sederhana dan aman yang disebut Json Web Tokens atau disingkat JWT.
‫Jadi Json Web Tokens adalah solusi tanpa
‫kewarganegaraan untuk otentikasi.
‫Jadi tidak perlu menyimpan status sesi apa pun di server
‫yang tentu saja sempurna untuk API yang tenang seperti yang sedang
‫kita bangun.
‫Karena ingat, API yang tenang harus selalu tanpa kewarganegaraan.
‫Dan alternatif yang paling banyak digunakan untuk otentikasi
‫dengan JWT adalah dengan hanya menyimpan status masuk pengguna
‫di server menggunakan sesi.
‫Tapi tentu saja tidak mengikuti prinsip
‫yang mengatakan bahwa API yang tenang harus tanpa
‫kewarganegaraan dan itulah mengapa kami memilih solusi seperti JWT.
‫Jadi sekarang mari kita lihat bagaimana otentikasi
‫benar-benar bekerja dengan Json Web Tokens.
‫Dan dengan asumsi kita sudah memiliki pengguna
‫terdaftar di database kita, beginilah cara pengguna masuk ke aplikasi.
‫Jadi klien pengguna mulai dengan membuat permintaan
‫posting dengan nama pengguna atau email dan kata sandi.
‫Aplikasi kemudian memeriksa apakah pengguna ada dan
‫apakah kata sandinya benar.
‫Dan jika demikian, Token Web Json unik
‫hanya untuk pengguna tersebut dibuat menggunakan string rahasia
‫yang disimpan di server.
‫Dan JWT itu sendiri sebenarnya hanyalah sebuah string
‫yang terlihat seperti ini.
‫Tapi kita akan berbicara lebih banyak tentang JWT itu
‫sendiri di slide berikutnya.
‫Bagaimanapun, server kemudian mengirimkan JWT itu kembali ke klien yang akan
‫menyimpannya di cookie atau di penyimpanan lokal.
‫Dan seperti ini, pengguna diautentikasi dan pada
‫dasarnya masuk ke aplikasi kami
‫tanpa meninggalkan status apa pun di server.
‫Jadi server sebenarnya tidak tahu pengguna mana
‫yang sebenarnya login.
‫Tapi tentu saja, pengguna tahu bahwa
‫dia masuk karena dia memiliki Token Web Json yang valid
‫yang agak mirip paspor untuk mengakses bagian aplikasi yang dilindungi.
‫Jadi sekali lagi, hanya untuk memastikan Anda mendapatkan ide.
‫Seorang pengguna masuk segera setelah dia mendapatkan
‫kembali Token Web Json uniknya yang valid yang tidak disimpan di mana
‫pun di server.
‫Dan karena itu proses ini sama sekali tanpa kewarganegaraan.
‫Kemudian, setiap kali pengguna ingin mengakses rute yang dilindungi, seperti
‫data profil pengguna, misalnya, ia
‫mengirimkan Token Web Json-nya bersama dengan permintaan.
‫Jadi itu seperti menunjukkan paspornya untuk mendapatkan akses
‫ke rute itu, bukan?
‫Dan itu mungkin cara terbaik dan termudah untuk memahami
‫seluruh gagasan ini.
‫Sekarang setelah permintaan mengenai server, aplikasi
‫kami kemudian akan memverifikasi apakah Token Web Json
‫benar-benar valid.
‫Jadi jika pengguna benar-benar seperti yang dia katakan.
‫Dan lebih lanjut tentang cara kerja
‫langkah ini nanti di video ini.
‫Nah jika token tersebut benar-benar valid, maka
‫data yang diminta akan dikirim ke client dan jika
‫tidak, maka akan ada error yang memberitahu user
‫bahwa dia tidak diperbolehkan untuk mengakses resource tersebut.
‫Dan selama pengguna masuk, beginilah
‫cara kerjanya setiap kali dia meminta data dari
‫rute yang dilindungi.
‫Sekarang yang sangat penting untuk
‫diperhatikan di sini adalah bahwa semua komunikasi ini harus terjadi melalui https.
‫Jadi amankan http terenkripsi untuk mencegah siapa pun
‫bisa mendapatkan akses ke kata sandi atau Token Web Json.
‫Hanya dengan begitu kita memiliki sistem yang benar-benar aman.
‫Tapi kita akan membicarakannya nanti di bagian ini, oke.
‫Jadi saya tahu bahwa ini bisa terlihat
‫cukup membingungkan pada awalnya
‫ketika Anda pertama kali mencoba
‫untuk membungkus kepala Anda, tetapi sebenarnya prinsipnya sendiri sebenarnya cukup sederhana, oke?
‫Dan hanya ini yang
‫perlu Anda ketahui agar dapat menerapkan otentikasi menggunakan JWT.
‫Tapi sekarang mari selami sedikit
‫lebih dalam tentang bagaimana sebenarnya JWT itu bekerja.
‫Jadi Token Web Json terlihat seperti bagian kiri dari tangkapan layar ini yang
‫diambil dari debugger JWT di jwt. saya
‫Jadi pada dasarnya, ini adalah string penyandian yang
‫terdiri dari tiga bagian.
‫Header, payload, dan tanda tangan.
‫Sekarang header hanyalah beberapa metadata tentang token itu sendiri dan
‫payload adalah data yang dapat kita encode
‫ke dalam token, data apa pun yang benar-benar kita inginkan.
‫Jadi semakin banyak data yang ingin kita
‫encode di sini, semakin besar JWT.
‫Bagaimanapun, kedua bagian ini hanyalah teks
‫biasa yang akan dikodekan, tetapi tidak dienkripsi.
‫Jadi siapa pun akan dapat memecahkan kode dan membacanya.
‫Jadi kami tidak dapat menyimpan data sensitif apa pun di sini.
‫Tapi itu tidak masalah
‫sama sekali karena di bagian ketiga, jadi di
‫tanda tangan, adalah tempat yang benar-benar menarik.
‫Tanda tangan dibuat menggunakan header, payload, dan
‫rahasia yang disimpan di server.
‫Ingat bahwa?
‫Dan seluruh proses ini
‫kemudian disebut menandatangani Json Web Token.
‫Jadi sekali lagi, algoritma penandatanganan mengambil
‫header, payload, dan rahasia untuk membuat tanda tangan yang unik.
‫Jadi hanya data ini plus rahasia
‫yang bisa membuat tanda tangan ini, oke?
‫Kemudian bersama dengan header dan payload,
‫tanda tangan ini membentuk JWT, yang
‫kemudian dikirim ke klien.
‫Sekarang seperti yang saya sebutkan secara singkat, tepat
‫di slide pertama, setelah server menerima JWT untuk memberikan
‫akses ke rute yang dilindungi, itu perlu
‫memverifikasinya untuk menentukan apakah pengguna benar-benar
‫seperti yang dia klaim, bukan?
‫Dengan kata lain, ini akan memverifikasi jika tidak ada yang
‫mengubah header dan data payload token.
‫Jadi sekali lagi, langkah verifikasi ini akan memeriksa
‫apakah tidak ada pihak ketiga yang benar-benar mengubah
‫header atau muatan Json Web Token.
‫Jadi, bagaimana sebenarnya verifikasi ini bekerja?
‫Yah itu sebenarnya cukup mudah.
‫Jadi begitu JWT diterima, verifikasi akan
‫mengambil header dan payloadnya dan bersama dengan
‫rahasia yang masih tersimpan
‫di server, pada dasarnya membuat tanda tangan uji.
‫Tapi tanda tangan asli yang
‫dihasilkan saat JWT pertama kali dibuat masih dalam token, kan?
‫Dan itulah kunci untuk verifikasi ini.
‫Karena sekarang yang harus kita lakukan
‫adalah membandingkan tanda tangan uji dengan tanda tangan asli.
‫Dan jika tanda tangan
‫uji sama dengan tanda tangan asli, berarti
‫payload dan header belum dimodifikasi, bukan?
‫Karena jika sudah
‫dimodifikasi, maka tanda tangan uji harus berbeda.
‫Oleh karena itu dalam hal ini di
‫mana tidak ada perubahan data, kami kemudian dapat mengautentikasi pengguna.
‫Dan tentu saja, jika
‫kedua tanda tangan itu benar-benar berbeda, ya
‫berarti ada orang yang merusak datanya.
‫Biasanya dengan mencoba mengubah payload.
‫Tetapi pihak ketiga yang memanipulasi muatan tersebut
‫tentu saja tidak memiliki akses ke rahasia tersebut, sehingga
‫mereka tidak dapat menandatangani JWT.
‫Jadi tanda tangan asli tidak akan pernah sesuai
‫dengan data yang dimanipulasi.
‫Dan karena itu, verifikasi akan selalu gagal
‫dalam kasus ini.
‫Dan itulah kunci untuk membuat seluruh sistem ini bekerja.
‫Keajaiban itulah yang membuat JWT begitu sederhana,
‫tetapi juga sangat kuat.
‫Jadi izinkan saya merangkumnya lagi.
‫Tanpa rahasia, tidak ada yang dapat memanipulasi data
‫JWT karena mereka tidak dapat membuat tanda
‫tangan yang valid untuk data baru.
‫Maksud saya mereka tentu saja dapat memanipulasi
‫data, tetapi itu akan selalu gagal dalam langkah verifikasi.
‫Sekarang, jangan khawatir, kami tidak akan benar-benar
‫mengimplementasikan algoritma JWT ini sendiri.
‫Mereka sangat kompleks dan kita tidak
‫akan menemukan kembali roda di sini, oke?
‫Tetapi tetap sangat penting untuk benar-benar memahami bagaimana seluruh
‫proses ini bekerja di belakang layar.
‫Dan saya berharap bahwa kuliah ini melakukan hal itu untuk Anda.
‫Tapi sekarang, mari kita beralih ke kuliah berikutnya untuk
‫benar-benar mulai menggunakan semua ini.