Saya baru saja membaca artikel ini yang berumur beberapa tahun tetapi menjelaskan cara cerdas untuk mengamankan API REST Anda. Pada dasarnya:
- Setiap klien memiliki pasangan kunci publik / pribadi yang unik
- Hanya klien dan server yang mengetahui kunci pribadi; itu tidak pernah dikirim melalui kawat
- Dengan setiap permintaan, klien mengambil beberapa input (seluruh permintaan itu sendiri, cap waktu saat ini, dan kunci pribadi) dan menjalankannya melalui fungsi HMAC untuk menghasilkan hash dari permintaan
- Klien kemudian mengirimkan permintaan normal (yang berisi kunci publik) dan hash ke server
- Server mencari kunci pribadi klien (berdasarkan kunci publik yang disediakan) dan melakukan beberapa pemeriksaan stempel waktu (yang memang saya tidak mengerti) yang memverifikasi permintaan itu bukan korban dari serangan replay
- Jika semuanya baik-baik saja, maka server menggunakan kunci pribadi dan fungsi HMAC yang sama untuk menghasilkan hash sendiri dari permintaan
- Server kemudian membandingkan kedua hash (yang dikirim oleh klien dan juga hash yang dihasilkannya); jika cocok, permintaan diautentikasi dan diizinkan untuk melanjutkan
Saya kemudian menemukan JWT , yang terdengar sangat mirip. Namun artikel pertama tidak menyebutkan JWT sama sekali, dan jadi saya bertanya-tanya apakah JWT berbeda dari solusi auth di atas, dan jika demikian, bagaimana.