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 Instagramdan menentukan yang API'sAnda butuhkan. Instagramakan memberi Anda client_iddanclient_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.
Firstkirim permintaan ke Instagram Authentication Serverdengan 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_secrectdengan mudah. Inilah sebabnya mengapa Anda perlu langkah lain.
Anda menerima codedan state. Di codesinitemporary dan tidak disimpan di mana pun.
Kemudian Anda melakukan secondpanggilan 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 codeyang menunjukkan pengguna telah memberikanclient_id untuk menggunakan sumber daya.
Sebagai tanggapan kita akan memiliki access_token