Apakah OAuth Connect dan Cara Penggunaannya
Kebanyakan daripada kita bersentuhan dengan OAuth ketika melayari Web, dan kebanyakan kita tidak menyedari kewujudannya. OAuth (Open Authentication) adalah sistem yang memberikan laman web pihak ketiga terhad akses ke akaun pengguna misalnya akaun Twitter atau Facebook anda. Ia membolehkan pengunjung berinteraksi dalam laman web ini tanpa memerlukan pendaftaran akaun baru atau melepaskan nama pengguna dan kata laluan anda kepada pihak ketiga.
Dalam panduan ini saya ingin memperkenalkan konsep OAuth dan bagaimana ia boleh digunakan untuk pemaju. Terdapat banyak butiran teknikal yang terlibat dalam pelaksanaan aplikasi OAuth anda sendiri. Contoh saya akan ditulis dalam PHP menggunakan pembungkus perpustakaan Twitter, tetapi anda boleh menggunakan hampir semua pengaturcaraan API yang popular dari Python hingga Ruby atau Objective-C.
Sekalipun konsep itu merasakan samar, cubalah mencerna sebanyak mungkin. Ia masih merupakan teknologi yang sangat misterius, baru sahaja dirumuskan pada tahun 2007. Saya pastinya tidak faham bagaimana untuk membangunkan Sambungan OAuth penuh walaupun selepas beberapa tutorial pertama tetapi jika anda tetap dengannya, anda akan menangkap dengan cepat. Sekarang mula-mula menendang sesuatu, pengenalan kecil!
Masalah Kita Boleh Menyelesaikan?
Sekiranya anda menganggap betapa banyaknya hubungan Internet telah menjadi kenyataan, pengguna hanya ingin berkongsi maklumat antara beberapa akaun dari Facebook ke Twitter, Tumblr, Foursquare, dan kini ke dalam aplikasi mudah alih seperti Path atau Instagram. Masalah yang kita hadapi sekarang adalah bagaimana untuk mencapai matlamat ini dengan cara yang paling selamat dan mudah. OAuth 1.0 adalah satu usaha untuk menyelesaikan masalah ini dan banyak lagi, berbanding dengan standard OpenID yang lebih lama. Pengguna masih memasukkan nama pengguna / kata laluan mereka ke laman web pihak ketiga yang lain hanya untuk menyambung ke OpenID. Ini tidak menjadikannya lebih selamat untuk pengguna. Di bawah spesifikasi OAuth, pengguna tidak perlu menyimpan sebarang data akaun peribadi ke pangkalan data pihak ketiga.
(Sumber Imej: Martin Hassman)
Dengan OAuth, penyedia akaun utama (misalnya Twitter, Facebook) akan mengalihkan anda (pengguna) ke halaman kebenaran terlebih dahulu. Pengguna kemudian log masuk ke rangkaian utama, dan kemudian menerima atau menolak sambungan baru ke laman web pihak ketiga. Teknologi ini sangat mudah dan anda sentiasa boleh mengabaikan sambungan dari tetapan akaun anda pada bila-bila masa. Perhatikan bahawa kata laluan anda tidak pernah diberikan kepada pihak ke-3 yang membuat protokol ini jauh lebih selamat daripada rakan sejawatannya.
Bagaimana Proses Kerja
Terdapat 3 pihak yang perlu dipertimbangkan dalam panggilan OAuth standard:
- Pembekal perkhidmatan - Rangkaian utama yang anda cuba tarik data dari. Mereka memberikan respon API seperti nama pengguna, gambar profil, URL laman web, dan barangan lain.
- Pengguna - Aplikasi pihak ke-3 yang ingin menerima data. Ini akan menjadi laman web atau aplikasi mudah alih yang membuat permintaan sambungan awal, kemudian juga mengendalikan data kembali setelah kebenaran.
- Pengguna - Orang yang duduk di belakang komputer berinteraksi dengan laman web yang akan menjadi anda!
Tujuan OAuth bukan untuk menyediakan perpustakaan khusus untuk laman web yang digunakan. Ia sebenarnya menetapkan “peraturan” untuk membina API protokol terbuka. Jadi, sementara kita semua boleh mendapat manfaat daripada teknologi ini sebenarnya pemaju yang benar-benar akan mendapat minat dalam bidang ini. Sekiranya anda memerlukan lebih banyak maklumat, lihat edisi v1.0 yang disemak semula pada April 2010.
Menghadapi Keselamatan
Seluruh proses akhirnya memerlukan 2 kunci berlainan bersama-sama dengan token akses. Kunci disediakan oleh perkhidmatan root selepas anda mendaftar aplikasi - ini dikenali sebagai anda pelanggan dan ID rahsia. ID pelanggan umumnya diluluskan ke URL Pengesahan supaya pelayan dapat mengenali apl anda.
ID rahsia disimpan dalam kod anda supaya pelayan boleh mengesahkan identiti aplikas anda. Begitu juga pelayan jauh akan memadankan ID rahsia anda dengan sendirinya sehingga anda tidak tersesat menghantar permintaan twitter ke Facebook Facebook, atau sebaliknya. Sekiranya pengguna memberi kuasa kepada sambungan itu dan semua kekunci itu padanan, maka ia akan dipulangkan ke laman web anda dengan kod rawak dan huruf rawak.
Kod ini digunakan untuk menghasilkan yang baru token akses. Bertingkah ini sama dengan pembolehubah sesi yang boleh anda simpan dalam cookie untuk memastikan pengguna masuk ke tapak web anda. Satu-satunya perbezaan adalah bahawa banyak perkhidmatan akan menghantar kembali Token Access dan Token Akses Rahsia. Anda mungkin memerlukan kedua-dua ini untuk menarik sebarang data dari pelayan. Contohnya boleh meminta foto profil pengguna untuk menyimpan salinan di laman web anda sendiri.
Contoh Perpustakaan untuk Twitter OAuth
Pemaju tidak selalunya bermula dari awal jadi mengapa tidak melihat ke perpustakaan yang dibina sebelum ini? Ini akan menjimatkan masa kita, dan dari sakit kepala, ketika bekerja dengan PHP. Mari kita lihat contoh yang sangat mudah di atas API Twitter.
Saya sangat mengesyorkan Twitter Async oleh Jaisen Mathai di GitHub. Ia berfungsi dengan sempurna dan juga menyediakan beberapa contoh kod yang sangat mudah yang boleh kita lihat. Anda boleh memuat turun .zip buat masa sekarang, tetapi sebelum kita melihat kod kami perlu mendaftar dan dapatkan ID aplikasi kami dari Twitter.
Mendaftar Aplikasi Baru
Twitter Dev Center adalah sumber yang hebat untuk mereka yang baru bermula di API. Ia telah ditulis dan ditulis semula berkali-kali selama beberapa tahun. Halaman yang kami mahu ialah https://dev.twitter.com/apps/new. Ia akan meminta anda untuk log masuk pada mulanya, maka anda perlu memasukkan beberapa kelayakan untuk aplikasi baru.
Nama dan keterangan apl dipaparkan apabila pengguna memberi kuasa kepada Twitter. URL Web anda juga penting untuk membezakan alamat pihak ketiga. Lebih mudah untuk bekerja dengan domain langsung walaupun anda boleh menggunakan localhost untuk ujian, tetapi saya tidak mengendalikan kaedah ini. Sama seperti mudah untuk mendaftar untuk host web percuma dan menjalankan skrip anda dari sana.
URL Panggil Balik dinyatakan sebagai destinasi terakhir setelah pelawat anda menerima atau menolak kebenaran. Ini tugas anda sebagai pengaturcara untuk membaca respons dari Twitter dan mengeluarkan mesej dengan sewajarnya. Di perpustakaan Async, kami sudah mendapat beberapa kelayakan di tempatnya, tetapi mereka tidak akan berfungsi sejak URL panggilan balik ditetapkan ke blog luar. Jika anda berminat untuk membina aplikasi web OAuth yang disambungkan sepenuhnya, saya telah memasukkan beberapa tutorial terperinci di bawah.
Semak Kod
Jika anda menggunakan hos web jauh anda mungkin mahu unzip pustaka Async dan muat naik ke direktori baru. Jika tidak, anda hanya boleh menyemak kod sumber. Kemungkinan kita tidak akan dapat menarik sambungan baru anyways. Tetapi pengalaman bersambung dengan memuat naik dan menyunting kod sumber selalu merupakan proses pembelajaran.
Dalam direktori root anda akan menemui skrip bernama simpleTest.php. Di dalamnya terdapat banyak kod PHP yang berkaitan dengan perpustakaan OAuth yang disertakan. Saya tidak akan dapat meletakkannya bersama untuk anda, tetapi kita harus melihat blok kod penting untuk menunjukkan butiran yang ketara.
Terdapat 4 pembolehubah yang sangat penting untuk ID pengguna dan rahsia pengguna, bersama dengan token dan ID token rahsia. Tidak semua perkhidmatan API memerlukan set 4 ini, tetapi ia adalah protokol OAuth yang sesuai. Kelas EpiTwitter memerlukan semua 4 nilai sebagai parameter dan menjana URL sambungan ke Twitter.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Dengan URL dinamik baru ini, anda boleh membuat butang log masuk untuk pengguna anda. Ini akan mengarahkan mereka terlebih dahulu ke halaman API Twitter yang selamat di mana pengguna sama ada menerima atau menafikan sambungan anda. Terlepas dari pilihan mereka pengguna kemudian akan diarahkan kembali ke URL panggil balik aplikasi anda. Keseluruhan protokol terbuka mempunyai perspektif yang sangat bersih yang membolehkan pembangunan pesat, terutama dengan perpustakaan yang tersedia dalam hampir setiap bahasa.
Pautan Berkaitan
- hueniverse oauth 1.0 panduan
- Pengenalan lembut kepada OAuth
- FAQ OAuth
- Panduan Pengesahan Facebook Dev
- Masuk Twitter OAuth Mudah
- Menggunakan OAuth dengan Twitter dalam Objektif-C Cocoa
- Mengonsumsi OAuth dengan bijak dalam Rails
Kesimpulannya
Semoga pengenalan ini ke OAuth telah membawa anda berminat untuk membina aplikasi melalui protokol. Ramai pemaju telah berusaha untuk penyelesaian seperti ini, dan OAuth 2.0 mungkin masa depan rangkaian sosial yang saling berkaitan. Saya sudah menggunakan lebih daripada dua sambungan dalam akaun Twitter saya dan telah benar-benar kagum dengan dokumentasi pemaju!
Jelas ada banyak perkara yang perlu dijelaskan mengenai topik ini. Ia bukan sesuatu yang anda boleh proses sepenuhnya dalam satu persatu. Lihat di sekitar jaring untuk lebih banyak penyelesaian OAuth dan beritahu kami fikiran anda di kawasan perbincangan di bawah.