Mana yang lebih aman dan mengapa?
Keduanya aman, tergantung pada lingkungan yang Anda gunakan.
Saya tidak melihat alasan mengapa langkah tambahan (pertukaran kode otorisasi untuk token) ditambahkan dalam satu alur kerja ketika server dapat langsung mengeluarkan token Access.
Sederhana saja. Klien Anda tidak aman. Mari kita lihat secara detail.
Pertimbangkan Anda membuat aplikasi yang menentang Instagram API
, sehingga Anda mendaftarkan aplikasi Anda dengan Instagram
dan menentukan yang API's
Anda butuhkan. Instagram
akan memberi Anda client_id
danclient_secrect
Di situs web Anda, Anda membuat tautan yang mengatakan. "Datang dan Gunakan Aplikasi Saya". Mengklik ini aplikasi web Anda harus membuat dua panggilan Instagram API
.
First
kirim permintaan ke Instagram Authentication Server
dengan parameter di bawah ini.
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
Anda tidak mengirimclient_secret
, Anda tidak bisa mempercayai klien (Pengguna dan peramban yang mencoba menggunakan aplikasi Anda). Klien dapat melihat url atau skrip java dan menemukan Anda client_secrect
dengan mudah. Inilah sebabnya mengapa Anda perlu langkah lain.
Anda menerima code
dan state
. Di code
sinitemporary
dan tidak disimpan di mana pun.
Kemudian Anda melakukan second
panggilan ke Instagram API
(dari server Anda)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
Karena panggilan dilakukan dari server kami, kami dapat menggunakan dengan aman client_secret
(yang menunjukkan bagaimana kami) dengan code
yang menunjukkan pengguna telah memberikanclient_id
untuk menggunakan sumber daya.
Sebagai tanggapan kita akan memiliki access_token