September 2008
Pengantar
Ini adalah waktu yang menarik bagi developer. Kami mulai melihat sejumlah standar terbuka yang diadopsi di seluruh web, dan seperti yang Anda ketahui, Google selalu menjadi penggemar standar dan membina komunitas open source.
Baru-baru ini, semua Google Data API mengadopsi dukungan untuk OAuth, protokol terbuka yang bertujuan untuk membuat standar cara aplikasi desktop dan web mengakses data pribadi pengguna. OAuth menyediakan cara melakukan autentikasi API dengan standar dan aman. Sebagai programmer, kita diajari untuk menggunakan kembali kode jika memungkinkan. OAuth akan membantu developer mengurangi jumlah kode duplikat yang mereka tulis dan mempermudah pembuatan alat yang berfungsi dengan beberapa layanan dari berbagai penyedia yang berbeda.
Audiens
Artikel ini mengasumsikan bahwa Anda telah memahami satu atau beberapa Google Data API, tetapi tidak harus memiliki konsep di balik OAuth. Jika Anda baru memulai, atau hanya ingin tahu tentang OAuth, tidak salah lagi. Artikel ini akan memberikan dasar dasar konsep. Saya juga akan membahas detail penerapan OAuth Google.
Dokumen ini juga ditujukan bagi developer yang terbiasa menggunakan AuthSub, terutama dalam mode terdaftar dengan keamanan yang ditingkatkan. Selama prosesnya, saya akan mencoba untuk menyoroti kesamaan dan perbedaan antara dua protokol. Jika memiliki aplikasi yang menggunakan AuthSub, Anda dapat menggunakan informasi ini untuk bermigrasi ke OAuth, yang merupakan protokol modern yang lebih terbuka.
Sedikit terminologi
Memahami OAuth berkaitan dengan memahami terminologinya. Spesifikasi OAuth dan dokumentasi Autentikasi OAuth untuk Aplikasi Web Google sangat bergantung pada definisi tertentu. Jadi, mari pahami arti setiap konteks dalam konteks penerapan OAuth Google.
- "Tarian OAuth"
Persyaratan tidak resmi saya untuk menjelaskan proses autentikasi/otorisasi OAuth secara lengkap.
- (OAuth) Meminta token
Token awal yang memungkinkan Google mengetahui bahwa aplikasi Anda meminta akses ke salah satu Google Data API. Langkah kedua dalam tarian OAuth adalah pengguna memberikan akses ke data mereka secara manual. Jika langkah ini berhasil, token permintaan akan diotorisasi.
- (OAuth) Token akses
Langkah terakhir dansa adalah menukar token permintaan yang sah dengan token akses. Setelah aplikasi Anda memiliki token ini, pengguna tidak perlu melakukan tarian OAuth lagi, kecuali jika token dicabut.
Kesamaan dengan AuthSub:
Token akses OAuth sama dengan token sesi AuthSub yang aman. - (OAuth) Endpoint
Ini adalah URI yang diperlukan untuk mengautentikasi aplikasi dan mendapatkan token akses. Ada tiga total - satu untuk setiap langkah proses OAuth. Endpoint OAuth Google adalah:
Mendapatkan token permintaan: https://www.google.com/accounts/OAuthGetRequestToken
Izinkan token permintaan: https://www.google.com/accounts/OAuthAuthorizeToken
Upgrade ke token akses: https://www.google.com/accounts/OAuthGetAccessToken
Kesamaan dengan AuthSub:
Mengganti token permintaan yang diotorisasi untuk token akses serupa dengan mengupgrade token AuthSub sekali pakai ke token sesi yang tahan lama dihttps://www.google.com/accounts/AuthSubRequestToken
danhttps://www.google.com/accounts/AuthSubSessionToken
. Perbedaannya adalah AuthSub tidak memiliki konsep token permintaan awal. Sebagai gantinya, pengguna memulai proses token dari halaman otorisasiAuthSubRequestToken
. - (OAuth) Penyedia Layanan
Untuk Google Data API, penyedia ini adalah Google. Secara umum, penyedia layanan digunakan untuk mendeskripsikan situs atau layanan web yang menyediakan endpoint OAuth. Contoh lain dari penyedia layanan OAuth adalah MySpace.
- (OAuth) Konsumen
Program yang meminta izin untuk mengakses data pengguna (yaitu aplikasi Anda). Protokol OAuth fleksibel karena memungkinkan berbagai jenis klien (web, terinstal, desktop, seluler).
Catatan: Meskipun protokol OAuth mendukung kasus penggunaan aplikasi desktop/terinstal, Google hanya mendukung OAuth untuk aplikasi web.
Memulai
Pendaftaran
Ada sedikit penyiapan sebelum Anda dapat mulai menggunakan OAuth dengan Google Data API. Karena semua permintaan OAuth harus ditandatangani secara digital, Anda harus mendaftarkan domain Anda terlebih dahulu dan mengupload sertifikat publik ke Google. Lihat Pendaftaran untuk Aplikasi Berbasis Web dan Membuat kunci dan sertifikat untuk digunakan dengan mode terdaftar untuk mendapatkan informasi cara melakukannya.
Permintaan penandatanganan
Setelah domain Anda terdaftar, Anda siap untuk mulai menandatangani permintaan. Salah satu konsep OAuth yang paling sulit adalah cara membuat oauth_signature
dengan benar dan gagasan string dasar tanda tangan. String dasar
adalah data yang Anda tanda tangani dengan kunci pribadi (menggunakan RSA_SHA1
). Hasilnya adalah nilai yang Anda tetapkan untuk oauth_signature
.
Contoh permintaan
GET
daftar Google Kalender pengguna di http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
Format string dasar | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
Contoh string dasar | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
Contoh permintaan HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
Catatan: Hal ini hanya dimaksudkan sebagai representasi. oauth_signature
Anda akan bertahan lebih lama.
Catatan tentang string dasar:
- Parameter kueri
orderby=starttime
diurutkan bersama dengan parameteroauth_*
lainnya dalam pengurutan nilai byte leksikografis. - String ini juga tidak berisi karakter '?'.
- Bagian
base-http-request-url
hanya berisi URL dasar berenkode URL:http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
. oauth_token
dienkode dengan URL ganda.
Catatan tentang header Authorization
:
- Urutan parameter
oauth_*
tidak menjadi masalah di headerAuthorization
. - Header tidak menyertakan
orderby=starttime
seperti yang dilakukan string dasar. Parameter kueri tersebut dipertahankan sebagai bagian dari URL permintaan.
Untuk mengetahui informasi lebih lanjut tentang penandatanganan permintaan menggunakan OAuth, lihat Menandatangani Permintaan OAuth.
Perbedaan dengan AuthSub:
Sebagai perbandingan, berikut adalah contoh yang sama menggunakan AuthSub yang aman:
Format string dasar | base_string = http-method http-request-URL timestamp nonce |
---|---|
Contoh string dasar |
GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
Contoh permintaan HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
Untuk mengetahui informasi lebih lanjut tentang penandatanganan permintaan menggunakan AuthSub, lihat Menandatangani Permintaan AuthSub.
Alat OAuth Playground
Tujuan
Beberapa pengguna menyarankan agar OAuth memiliki kurva pembelajaran yang tinggi. Dibandingkan dengan API autentikasi Google lainnya, saya setuju. Keuntungan OAuth akan terlihat jelas saat Anda memperluas aplikasi untuk menggunakan layanan lain (non-Google). Menulis satu bagian kode autentikasi yang berfungsi di berbagai penyedia layanan, dan API-nya, menurut saya cukup bagus. Anda nanti akan berterima kasih kepada Anda karena telah mempelajari protokol tersebut.
OAuth Playground adalah alat yang saya buat untuk membantu developer mengatasi masalah OAuth mereka. Anda dapat menggunakan Playground untuk membantu men-debug masalah, memeriksa penerapan Anda sendiri, atau bereksperimen dengan Google Data API.
Apa fungsinya?
- Menggambarkan alur autentikasi OAuth: mengambil token permintaan, memberi otorisasi pada token, dan mengupgradenya ke token akses.
- Menampilkan string dasar tanda tangan yang benar untuk setiap permintaan.
- Menampilkan header
Authorization
yang benar untuk setiap permintaan. - Menunjukkan bagaimana menggunakan
oauth_token
untuk berinteraksi dengan feed Data Google yang diautentikasi. Anda dapat menggunakan dataGET
/POST
/PUT
/DELETE
. - Lihat feed yang diautentikasi langsung di browser Anda.
- Memungkinkan Anda menguji
oauth_consumer_key
(domain terdaftar) dan kunci pribadi sendiri. - Cari tahu layanan feed Data Google yang tersedia untuk
oauth_token
.
Jalankan Demo
Langkah 1: Pilih Cakupan AndaPertama, tentukan API yang ingin digunakan dengan memilih satu atau beberapa cakupan. Dalam demonstrasi ini, saya meminta token yang akan berfungsi dengan Blogger dan Google Kontak. Kesamaan dengan AuthSub: |
|
Langkah 2: Ubah Parameter dan Setelan OAuthUntuk saat ini, jangan ubah setelan apa pun di kotak "Ubah Parameter OAuth". Kemudian, Anda dapat menguji dengan kunci pribadi Anda sendiri dengan mengubah
Catatan: Selain Perbedaan dengan AuthSub: |
|
Langkah 3-5: Dapatkan token aksesAda tiga langkah untuk mendapatkan token akses OAuth. Langkah pertama adalah mengambil token permintaan. Hal ini memungkinkan Google mengetahui bahwa aplikasi Anda memulai tarian OAuth. Pertama, klik tombol "Minta token" di kotak "Dapatkan Token". Kolom tertentu akan diisi dengan data.
|
|
Selanjutnya, klik tombol "Otorisasi" di kotak "Dapatkan token". Pada halaman otorisasi ini, klik tombol "Berikan Akses" untuk mengizinkan token permintaan dan dialihkan kembali ke OAuth Playground. Kesamaan dengan AuthSub: Perbedaan dengan AuthSub: Tips: Menentukan URL |
|
Terakhir, klik tombol "Access token" di kotak "Get the Token". Tindakan ini akan mengupgrade token permintaan yang diizinkan (seperti yang ditunjukkan oleh label "token akses") berwarna merah. Jika Anda ingin mengambil token baru, klik "mulai lagi" untuk memulai ulang tarian OAuth. Sekarang kita dapat melakukan sesuatu yang menarik. |
Menggunakan token akses
Sekarang Anda siap mengkueri feed, menyisipkan, memperbarui, atau menghapus data. Berhati-hatilah saat melakukan tiga metode HTTP terakhir ini saat Anda bekerja dengan data aktual.
Tips: Untuk menemukan feed yang tersedia bagi token akses Anda, klik tombol "feed yang tersedia".
Berikut adalah contoh kueri: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3
Contoh ini tidak menampilkan lebih dari tiga postingan di blog tertentu. Anda juga dapat melihat feed/entri yang ditampilkan langsung di browser dengan mengklik link "Lihat di browser" di bawah area yang disorot sintaksis.
Contoh: Cara memperbarui postingan
- Temukan elemen
<link>
dengan rel="edit" di postingan yang ingin Anda perbarui. Output tersebut harus terlihat seperti ini:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
Tempel URL href di input "Masukkan feed Data Google".
- Salin XML entri yang ada dengan mengklik "view plain" di bagian atas panel yang disorot sintaksis. Hanya salin isi respons, bukan header.
- Ubah dropdown metode HTTP menjadi
PUT
. - Klik "enter post data" di bawah dropdown tersebut, lalu tempelkan XML
<entry>
ke dalam pop-up. - Klik tombol "eksekusi".
Server akan merespons dengan 200 OK
.
Tips: Hapus centang kotak 'Sintaksis Sintaksis' secara manual, bukan link edit
. Setelah kueri, Anda akan dapat mengklik link dalam isi respons XML.
Kesimpulan
Teknologi seperti AtomPub/Atom Publishing Protocol (protokol dasar Google Data API) dan OAuth membantu memajukan web. Karena semakin banyak situs yang mulai menerapkan standar ini, kami adalah pemenangnya. Membuat aplikasi pembunuh secara tiba-tiba menjadi kurang menakutkan.
Jika Anda memiliki pertanyaan atau komentar tentang OAuth Playground, atau menggunakan OAuth dengan Google API, kunjungi kami di Forum Dukungan G Suite API dan Marketplace API.