Saya merujuk pada artikel yang sangat bagus ini http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ yang berbicara tentang amazon seperti keamanan untuk layanan web. Namun saya ditanya pertanyaan dalam tim mengapa kita membutuhkannya jika kita sudah menggunakan HTTPS. Saya tidak dapat menjawab karena sepertinya bagi saya mereka mungkin benar meskipun nyali mengatakan sebaliknya.
Juga ada tempat ketika menyediakan layanan REST di mana HTTPS mungkin tidak berfungsi? Suka situs web pihak ketiga?
Jika ada yang punya pengalaman dalam mengamankan Layanan Web melalui jalinan publik, silakan jelaskan pengalaman Anda.
Terima kasih sebelumnya.
EDIT: Untuk memperjelas saya tidak berbicara tentang otentikasi pengguna tetapi lebih pada otentikasi klien. Otentikasi pengguna dapat dianggap sebagai teks biasa melalui HTTPS + REST.
Kekhawatiran saya adalah ini masih memungkinkan siapa saja untuk menggunakan layanan web tanpa klien saya untuk mengaksesnya karena semuanya adalah teks biasa meskipun melalui HTTPS titik akhir klien masih dapat menggunakan layanan web saya tanpa aplikasi klien.
Jawaban:
Mengapa kita perlu memberikan Gmail - atau situs lain mana pun dengan akun pengguna - nama pengguna dan kata sandi kami jika sudah menggunakan HTTPS? Jawabannya sama dengan jawaban untuk pertanyaan Anda.
HTTPS menyediakan, pertama dan terutama, koneksi terenkripsi antara server dan klien.
Kecuali server memberikan sertifikat kepada setiap pengguna , server tidak dapat mempercayai klien tanpa beberapa metode otentikasi lainnya.
sumber
HTTPS sangat bagus untuk mencegah penyadapan dan serangan "man in the middle". Karena mengenkripsi semua lalu lintas untuk satu sesi.
Tetapi karena kebanyakan orang menggunakan sertifikat default yang datang dengan browser mereka dan tidak tahu cara membuat sertifikat pribadi mereka sendiri atau mengkonfigurasi browser untuk menggunakannya.
Ini membuat HTTPS sangat tidak berguna untuk otentikasi pengguna selain melindungi dialog otentikasi dari menguping dll.
sumber
HTTPS adalah tentang mengamankan saluran, bukan membuktikan siapa peneleponnya, atau banyak hal lain yang perlu Anda pertimbangkan. Otentikasi, otorisasi, dan enkripsi lapisan transpor hanya sebagian kecil dari apa yang perlu Anda pertimbangkan. Banyak kerentanan diketahui terkait dengan aplikasi web berlaku sangat banyak untuk REST apis. Anda harus mempertimbangkan validasi input, cracking sesi, pesan kesalahan yang tidak pantas, kerentanan karyawan internal dan sebagainya. Itu adalah subjek besar.
Robert
sumber
Anda dapat mengambil pendekatan sertifikat SSL klien dan memisahkan keamanan dari api. Kelemahan besar untuk pendekatan ini adalah overhead operasi yang akan menjadi mahal karena semakin banyak klien mengkonsumsi api Anda.
Bagaimanapun, otentikasi dasar HTTP baik-baik saja untuk sebagian besar layanan yang dikonsumsi publik.
sumber