Hal-hal penting yang perlu Anda ketahui tentang OAuth

OAuth adalah sesuatu yang harus diketahui oleh setiap pengembang. Jika Anda membuat aplikasi mandiri atau aplikasi pihak ketiga yang terintegrasi dengan beberapa service HTTP lainnya, Anda perlu mengetahui cara kerja OAuth untuk menyediakan service yang mudah digunakan dan terintegrasi dengan baik kepada user Anda.

Idenya adalah untuk memungkinkan aplikasi client akses terbatas ke informasi user tanpa pernah membagikan kredensial user atau password. Framework kerja OAuth bertanggung jawab atas pertukaran yang diperlukan sebelum aplikasi mendapatkan informasi Anda.

Misalkan Anda ingin mendaftar ke Dev.to (yang merupakan tempat yang bagus bagi pengembang untuk bertukar ide), mereka mengizinkan Anda mendaftar menggunakan akun GitHub Anda. Bagaimana itu terjadi? Bagaimana mereka tahu Anda memiliki akun GitHub, yang Anda gunakan untuk mendaftar?

Lebih penting lagi, bagaimana Anda memastikan bahwa Dev.to tidak melampaui batasannya dalam hal informasi Anda yang disimpan dengan GitHub?

Peserta OAuth

Kami akan tetap menggunakan contoh plugin GitHub editor Atom yang memungkinkan pengembang untuk mendorong kode ke GitHub secara langsung menggunakan interface Atom. Alasan untuk ini sebagai contoh adalah karena GitHub tidak menyembunyikan detail di balik layar dan Anda dapat melihat apa yang terjadi di balik layar.

Sebelum kita masuk ke detail kerja OAuth. Mari kita mengatur panggung dengan mengenali semua peserta dalam pertukaran:

  1. Resource Owner or User: Pengguna ini adalah user yang informasi akunnya perlu diakses (baca dan/atau tulis) agar dapat berfungsi dengan aplikasi.
  2. Client: Ini adalah aplikasi yang meminta izin Anda untuk mengakses informasi Anda dari service lain. Dalam contoh kita, editor Atom adalah clientnya.
  3. Resource: Sumber daya adalah informasi aktual Anda yang tersimpan di server di beberapa lokasi terpencil. Ini dapat diakses melalui API jika client diberikan izin yang sesuai.
  4. Authorization Server: Juga dihubungkan dengan melalui API. Server ini dikelola oleh penyedia service (GitHub dalam contoh kami). Server otorisasi dan server sumber daya disebut sebagai API karena dikelola oleh satu entitas, dalam hal ini GitHub, dan diekspos sebagai API kepada pengembang client.

Pendaftaran OAuth

Proses dimulai ketika aplikasi Client sedang dikembangkan. Anda dapat pergi ke penyedia sumber daya dan mendaftar dengan portal pengembang mereka atau bagian API dari situs web. Anda juga harus memberikan URL panggilan balik tempat user akan dialihkan setelah menerima atau menolak untuk memberikan izin yang diperlukan aplikasi.

Misalnya, jika Anda pergi ke GitHub→ Settings → Developer Settings dan klik “Register a New Application”. Ini akan memberi Anda ID Client yang dapat dipublikasikan dan Rahasia Client yang harus dirahasiakan oleh organisasi pengembang.

Setelah ID Client dan rahasia diberikan kepada Anda, pengembang, Anda must jaga agar tetap aman dan terlindungi karena tidak akan ditampilkan lagi oleh server Otorisasi. Hal yang sama berlaku untuk token lain yang akan dilempar (Lebih lanjut tentang token nanti).

Alur Kerja OAuth 2

Anda telah mendaftarkan aplikasi Anda. Ini telah dikembangkan dan diuji dan sekarang user siap untuk menggunakannya. Pengguna baru saat mendaftar dengan service Anda akan diperlihatkan opsi “Masuk dengan GitHub”. Ini adalah langkah pertama.

Langkah 1: Permintaan otorisasi

Permintaan otorisasi adalah bagian di mana jendela baru (atau permintaan serupa) terbuka dengan halaman web sumber daya dan meminta user untuk masuk. Jika Anda sudah masuk, di perangkat itu, maka langkah ini dilewati dan Anda hanya diminta oleh GitHub apakah Anda ingin memberikan akses ke aplikasi client Atom. Ini jauh lebih transparan dalam kasus Atom karena mereka meminta Anda untuk secara manual membuka situs web GitHub dan memberi mereka izin.

Saat mengunjungi URL, Anda akan dimintai izin.

Perhatikan URL yang menunjukkan bahwa ini adalah halaman web aman (HTTPS) oleh GitHub.Inc. Sekarang Anda, user, dapat yakin bahwa Anda berinteraksi langsung dengan GitHub. Atom hanya menunggu, cukup out-of-the-way.

Tidak seperti Atom, sebagian besar aplikasi client secara otomatis memuat halaman login atau izin. Meskipun ini sangat nyaman, ini juga dapat disalahgunakan, jika aplikasi client memutuskan untuk membuka tautan phishing. Untuk menghindari hal ini, Anda harus selalu memeriksa URL tujuan pengalihan Anda, dan memastikan bahwa itu adalah URL yang benar dan menggunakan protokol HTTPS.

Langkah 2: Mendapatkan Hibah Otorisasi

Untuk memberi tahu client Atom, Anda diberikan token (pemberian otorisasi) yang kemudian dikirimkan ke client Atom.

Setelah user melakukan ini, pekerjaan user selesai. (Faktanya, user biasa bahkan tidak mengetahui tentang pertukaran hibah otorisasi. Contoh GitHub dipilih untuk menunjukkan bahwa inilah yang terjadi).

Langkah 3: Mendapatkan token akses

Pemberian otorisasi masih bukan entitas yang memberi client akses ke informasi user. Itu diperoleh dengan menggunakan sesuatu yang disebut token akses. Yang mana aplikasi client akan coba dapatkan dalam langkah ini.

Untuk melakukan ini, client sekarang harus memberikan hibah otorisasi ke server otorisasi bersama dengan bukti identitasnya sendiri. Identitas tersebut diverifikasi menggunakan Client ID dan Client secret yang diberikan pada aplikasi client tadi.

Verifikasi identitas dilakukan untuk memastikan bahwa user tidak tertipu untuk menggunakan aplikasi jahat yang berpura-pura menjadi aplikasi yang sah. Misalnya, jika seseorang memutuskan untuk memberi nama executable mereka sebagai Atom dengan nama, logo, dan fungsionalitas yang sama, user mungkin tertipu untuk memberikan akses ke client yang dapat menyalahgunakan informasi Anda. Mereka dapat mengintip atau bahkan bertindak tanpa persetujuan Anda. Server otorisasi memastikan bahwa client memang seperti yang terlihat oleh usernya.

Setelah identitas diverifikasi dan pemberian otorisasi diterima, server otorisasi melempar token ke aplikasi client. Anggap token sebagai kombinasi nama user dan password yang dapat diberikan ke server sumber daya untuk mengakses sumber daya tertentu yang dilindungi yang diizinkan oleh pemilik sumber daya untuk Anda akses.

Terakhir, dengan menggunakan token ini, aplikasi sekarang dapat memperoleh akses ke informasi user yang diperlukan dan sumber daya lainnya dari server sumber daya.

Perhatikan, bagaimana dalam keseluruhan ini pertukaran nama user dan password yang sebenarnya di mana tidak pernah dibagikan dengan client? Itulah keindahan OAuth. Alih-alih memberikan nama user dan password yang akan memberikan aplikasi semua akses ke sumber daya, ia menggunakan token sebagai gantinya. Dan token hanya dapat memperoleh akses terbatas ke sumber daya.

Mencabut Izin

Misalkan Anda kehilangan akses ke perangkat Anda yang memiliki aplikasi client resmi di dalamnya. Anda dapat masuk ke GitHub dan membuka Pengaturan → Aplikasi → Aplikasi OAuth Resmi untuk mencabut pemberian otorisasi dan token akses. Saya akan melakukan hal yang sama, karena, pada tangkapan layar di atas, hibah Otorisasi ditampilkan secara publik.

Sekarang Anda memiliki pandangan menyeluruh tentang bagaimana OAuth 2.Anda dapat membaca lebih lanjut tentang pemberian otorisasi dan detail protokol lainnya yang lebih baik dan bagaimana panggilan API dilakukan di sini.

Related Posts