OAuth adalah sesuatu yang harus diketahui oleh setiap pengembang. Jika Anda membuat aplikasi mandiri atau aplikasi pihak ketiga yang terintegrasi dengan layanan HTTP lain, Anda perlu mengetahui cara kerja OAuth untuk memberikan layanan yang mudah digunakan dan terintegrasi dengan baik kepada pengguna Anda.
Idenya adalah untuk mengizinkan aplikasi klien akses terbatas ke informasi pengguna tanpa pernah bertukar kredensial atau kata sandi pengguna. Framework OAuth bertanggung jawab atas pertukaran yang diperlukan sebelum aplikasi menerima data Anda.
Katakanlah Anda ingin mendaftar ke Dev.to (yang merupakan tempat yang bagus bagi pengembang untuk bertukar pikiran), mereka mengizinkan Anda mendaftar menggunakan akun GitHub Anda. Bagaimana ini bisa terjadi? Bagaimana mereka tahu Anda memiliki akun GitHub tempat Anda mendaftar?
Yang terpenting, bagaimana Anda memastikan Dev.to tidak melewati batasnya terkait dengan informasi Anda yang disimpan di GitHub?
peserta OAuth
Kami akan tetap menggunakan contoh aplikasi GitHub editor Atom, yang memungkinkan pengembang untuk mendorong kode ke GitHub secara langsung menggunakan antarmuka Atom. Alasannya sebagai contoh adalah karena GitHub tidak menyembunyikan detail di balik layar dan Anda dapat melihat apa yang terjadi di balik layar.
Sebelum membahas detail tentang cara kerja OAuth. Mari kita lancarkan dengan mengenal semua peserta pertukaran.
- Pemilik atau pengguna sumber daya. Pengguna ini adalah pengguna yang data akunnya harus dapat diakses (baca dan/atau tulis) agar aplikasi dapat berfungsi.
- Pelanggan: Ini adalah aplikasi yang meminta izin Anda untuk mengakses informasi Anda dari layanan lain. Dalam contoh kami, editor Atom adalah kliennya.
- Sumber: Sumber daya adalah informasi aktual Anda yang dihosting di server di lokasi terpencil tertentu. Ini dapat diakses melalui API jika klien diberikan izin yang sesuai.
- Server otorisasiJuga antarmuka melalui API. Server ini dikelola oleh penyedia layanan (GitHub dalam contoh kami). Baik server izin maupun server sumber daya disebut API karena dikelola oleh satu entitas, dalam hal ini GitHub, dan diekspos sebagai API ke pengembang klien.
Pendaftaran OAuth
Proses dimulai saat aplikasi Klien dikembangkan. Anda dapat pergi ke penyedia sumber daya dan mendaftar di portal pengembang atau bagian API situs web mereka. Anda juga harus memberikan URL panggilan balik tempat pengguna akan dialihkan setelah menerima atau menolaknya untuk memberikan izin yang diperlukan kepada aplikasi.
Misalnya, jika Anda pergi ke GitHub→Settings→Developer Settings dan klik “Daftar aplikasi baru”. Ini akan memastikan Anda a ID Klien: yang dapat diterbitkan dan a Rahasia Klien yang harus disimpan oleh organisasi yang sedang berkembang… rahasia yang bagus.
Setelah Client ID dan Secret diberikan kepada Anda, developer, Anda diperlukan jaga agar tetap aman dan terjamin karena tidak lagi ditampilkan oleh Server Otorisasi. Hal yang sama berlaku untuk token lain yang mungkin dilemparkan (Lebih lanjut tentang itu nanti).
Alur Kerja OAuth 2
Anda telah mendaftarkan aplikasi Anda. Ini telah dikembangkan dan diuji dan sekarang pengguna siap menggunakannya. Saat mendaftar ke layanan Anda, pengguna baru akan diberikan opsi untuk “Masuk dengan GitHub”. Ini adalah langkah pertama.
Langkah 1: Permintaan izin
Permintaan izin adalah bagian di mana jendela baru (atau prompt serupa) terbuka dengan halaman web sumber daya dan meminta akses pengguna. Jika Anda sudah masuk di perangkat itu, langkah ini dilewati dan GitHub hanya menanyakan apakah Anda ingin masuk ke aplikasi klien Atom. Ini jauh lebih transparan dengan Atom, karena mereka meminta Anda membuka situs GitHub secara manual dan memberi mereka izin.
Saat mengunjungi URL, Anda dimintai izin.
Perhatikan URL yang menunjukkan bahwa ini adalah halaman web aman (HTTPS) dari GitHub.Inc. Sekarang Anda, sebagai pengguna, dapat yakin bahwa Anda sedang berkomunikasi langsung dengan GitHub. Atom hanya menunggu, cukup jauh.
Tidak seperti Atom, sebagian besar aplikasi klien memuat halaman masuk atau izin secara otomatis. Meskipun sangat nyaman, ini juga dapat disalahgunakan jika aplikasi klien memutuskan untuk membuka tautan phishing. Untuk menghindari hal ini, Anda harus selalu memeriksa URL tujuan Anda diarahkan dan memastikan itu adalah URL yang benar dan menggunakan protokol HTTPS.
Langkah 2: Dapatkan hibah izin
Untuk memberi tahu klien Atom, Anda diberi token (hibah otorisasi), yang kemudian diberikan ke klien Atom.
Ketika pengguna melakukan ini, pekerjaan pengguna selesai. (Faktanya, rata-rata pengguna bahkan tidak menyadari pertukaran pemberian izin. Contoh GitHub dipilih untuk menunjukkan bahwa ini terjadi.)
Langkah 3: Dapatkan token akses
Pemberian izin belum menjadi entitas yang memberi pelanggan akses ke informasi pengguna. Ini dilakukan dengan menggunakan sesuatu yang disebut token akses. Apa yang akan dicoba oleh aplikasi klien pada langkah ini.
Untuk melakukan ini, klien sekarang harus mengeluarkan izin otorisasi ke server otorisasi bersama dengan bukti identitas Anda. Identitas diautentikasi menggunakan ID Klien dan Rahasia Klien yang sebelumnya ditetapkan ke aplikasi klien.
Verifikasi identitas dilakukan untuk memastikan bahwa pengguna tidak tertipu untuk menggunakan aplikasi jahat yang berpura-pura menjadi aplikasi yang sah. Misalnya, jika seseorang memutuskan untuk menamai executable mereka sebagai Atom dengan nama, logo, dan fungsionalitas yang sama, pengguna dapat tertipu untuk memberikan akses ke klien yang dapat menyalahgunakan informasi Anda. Mereka dapat mengambil atau bahkan bertindak tanpa persetujuan Anda. Server otorisasi memastikan bahwa klien benar-benar seperti yang terlihat oleh penggunanya.
Setelah identitas diverifikasi dan pemberian otorisasi diterima, server otorisasi mengeluarkan token ke aplikasi klien. Pikirkan token sebagai kombinasi nama pengguna dan kata sandi yang dapat diberikan ke server sumber daya untuk mengakses sumber daya tertentu yang dilindungi yang telah diberikan akses kepada Anda oleh pemilik sumber daya.
Terakhir, dengan menggunakan token ini, aplikasi sekarang dapat mengakses informasi pengguna yang diperlukan dan sumber daya lain dari server sumber daya.
Perhatikan bagaimana selama seluruh pertukaran ini, nama pengguna dan kata sandi yang sebenarnya tidak pernah dibagikan dengan pelanggan. Itulah keindahan OAuth. Alih-alih memberikan nama pengguna dan kata sandi yang akan memberi aplikasi akses ke semua sumber daya, aplikasi ini menggunakan token. Dan token hanya bisa mendapatkan akses terbatas ke sumber daya.
Mencabut Izin
Misalkan Anda kehilangan akses ke perangkat Anda yang memiliki aplikasi klien resmi di dalamnya. Anda dapat masuk ke GitHub dan pergi ke Pengaturan → Aplikasi → Aplikasi OAuth Resmi untuk mencabut pemberian otorisasi dan token akses. Saya akan melakukan hal yang sama karena pemberian izin pada tangkapan layar di atas telah ditampilkan secara publik.
Sekarang Anda telah melihat bagaimana OAuth 2. Anda dapat membaca selengkapnya tentang pemberian izin dan detail protokol lainnya serta cara panggilan API dilakukan di sini.