Ketika API mengharuskan klien mengautentikasi ke dalamnya, saya telah melihat dua skenario berbeda yang digunakan dan saya ingin tahu kasus mana yang harus saya gunakan untuk situasi saya.
Contoh 1. API ditawarkan oleh perusahaan untuk memungkinkan pihak ketiga untuk mengautentikasi dengan token dan rahasia menggunakan HTTP Basic.
Contoh 2. API menerima nama pengguna dan kata sandi melalui HTTP Basic untuk mengautentikasi pengguna akhir. Umumnya mereka mendapatkan token kembali untuk permintaan di masa depan.
Pengaturan Saya: Saya akan memiliki API JSON yang saya gunakan sebagai backend saya untuk aplikasi seluler dan web. Sepertinya praktik yang baik untuk aplikasi seluler dan web mengirimkan tanda dan rahasia sehingga hanya dua aplikasi ini yang dapat mengakses API yang memblokir pihak ketiga mana pun.
Tetapi aplikasi seluler dan web memungkinkan pengguna untuk masuk dan mengirim posting, melihat data mereka, dll. Jadi saya ingin mereka juga masuk melalui HTTP Basic pada setiap permintaan.
Apakah saya entah bagaimana menggunakan kombinasi kedua metode ini atau hanya mengirim kredensial pengguna akhir (nama pengguna dan token) pada setiap permintaan? Jika saya hanya mengirim kredensial pengguna akhir, apakah saya menyimpannya dalam cookie pada klien?
sumber
Jawaban:
Otentikasi dasar HTTP mengharuskan nama pengguna dan kata sandi dikirimkan bersama setiap permintaan sumber daya. Nama pengguna: kata sandi dilewatkan dalam string "Permintaan" header base64 yang disandikan diawali dengan "Dasar". Jika semua komunikasi http Anda dienkripsi (melalui ssl) informasi kepala Otorisasi seharusnya tidak dapat dengan mudah digunakan oleh penyerang karena tidak mungkin mereka akan dapat memperolehnya.
Http terenkripsi SSL dengan otentikasi dasar harus cukup.
sumber
Bisakah OAuth / OpenID bekerja, bersama dengan token / rahasia?
Saya baru-baru ini merenungkan skenario berikut:
Sebagai tes sederhana, saya dapat:
Ini akan memungkinkan Aplikasi Perangkat Seluler untuk mengautentikasi dengan kredensial yang sama seperti melalui Web Front End (akun yang sama) dan juga dapat mengotorisasi akses ke API.
sumber