Alur kredensial klien




OAuth 2 adalah kerangka otorisasi yang memungkinkan aplikasi memiliki akses terbatas ke akun pengguna di layanan HTTP seperti Facebook, GitHub, dan DigitalOcean. Ini bekerja berdasarkan prinsip mendelegasikan otentikasi pengguna ke layanan yang menghosting akun pengguna, memungkinkan aplikasi pihak ketiga untuk mengakses akun pengguna. OAuth 2 berfungsi di web, desktop, dan aplikasi seluler.

Artikel ini ditujukan untuk pengembang aplikasi dan memberikan gambaran umum tentang peran, jenis otorisasi, dan kasus penggunaan umum untuk OAuth 2.

Mari kita mulai dengan peran OAuth!

Peran

OAuth mendefinisikan empat peran:

  • Pemilik sumber daya
  • Klien
  • server sumber daya
  • Server otorisasi

Pemilik sumber daya: Pengguna

Pemilik sumber daya adalah pengguna yang berwenang aplikasi untuk mengakses akun Anda. Akses aplikasi ke akun pengguna dibatasi oleh “cakupan” hak otorisasi yang diberikan (misalnya, akses baca atau tulis).

Sumber Daya/Server Otorisasi: API

Server sumber daya secara langsung menyimpan data aman akun pengguna, dan server otorisasi memverifikasi keaslian informasi yang diberikan pengguna, lalu membuat token otorisasi untuk aplikasi, yang dengannya aplikasi akan mengakses data pengguna.

Dari sudut pandang pengembang aplikasi, API layanan secara bersamaan melakukan peran server sumber daya dan peran server otorisasi. Berikut ini, kami akan menganggap kedua peran ini sebagai satu, dan menyebutnya Melayani atau API.

Klien: Aplikasi

Klien adalah aplikasi yang ingin mengakses akun tersebut pengguna. Sebelum akses dapat diberikan, aplikasi harus diotorisasi oleh pengguna, dan otorisasi tersebut harus disetujui oleh API.

Sekarang setelah kita memiliki gagasan tentang peran yang digunakan di OAuth, mari kita lihat diagram tentang cara mereka berinteraksi satu sama lain.

Perhatikan deskripsi urutan langkah-langkah dalam diagram ini:

  1. Aplikasi bertanya dari pengguna otorisasi untuk mengakses server sumber daya.
  2. Jika pengguna mengizinkan permintaan tersebut, aplikasi menerima hibah otorisasi.
  3. Aplikasi meminta token otorisasi dari server otorisasi(API) dengan memberikan informasi tentang dirinya sendiri dan izin otorisasi dari pengguna.
  4. Jika keaslian aplikasi dikonfirmasi dan izin otorisasi valid, server otorisasi(API) membuat token akses untuk aplikasi. Proses otorisasi telah selesai.
  5. Aplikasi meminta sumber daya dari server sumber daya(API), sambil memberikan token akses untuk autentikasi.
  6. Jika token itu valid, server sumber daya(API) menyediakan sumber daya yang diminta aplikasi.

Urutan langkah sebenarnya dalam proses ini dapat bervariasi tergantung pada jenis izin otorisasi yang digunakan, tetapi secara umum prosesnya akan seperti yang dijelaskan. Selanjutnya, kita akan melihat berbagai jenis izin otorisasi.

Pendaftaran aplikasi

Sebelum dapat mulai menggunakan OAuth di aplikasi, Anda perlu mendaftarkan aplikasi ke layanan. Ini dilakukan dengan mendaftar di bagian "pengembang" atau "API" dari situs layanan, di mana Anda perlu memberikan informasi berikut (mungkin termasuk beberapa detail tentang aplikasi Anda):

  • nama aplikasi
  • Situs aplikasi
  • Alihkan URL atau URL panggilan balik

Redirect URL adalah URL tujuan layanan akan mengarahkan pengguna setelah otorisasi (atau penolakan otorisasi) aplikasi Anda.

ID Klien dan Rahasia Klien

Setelah mendaftarkan aplikasi, layanan akan membuat kredensial klien - ID klien (ID klien) dan rahasia klien (rahasia klien). ID klien adalah string yang dapat diakses publik yang digunakan oleh API layanan untuk mengidentifikasi aplikasi dan juga digunakan untuk menghasilkan URL otorisasi bagi pengguna. Rahasia klien digunakan untuk mengautentikasi identitas aplikasi ke API layanan saat aplikasi meminta akses ke akun pengguna. Rahasia klien hanya boleh diketahui oleh aplikasi dan API.

izin otorisasi

DI DALAM deskripsi abstrak dari protokol di atas, empat langkah pertama menangani pembuatan izin otorisasi dan token akses. Jenis izin otorisasi bergantung pada metode yang digunakan oleh aplikasi untuk meminta otorisasi, serta jenis izin mana yang didukung oleh API. OAuth 2 mendefinisikan empat jenis berbeda, yang masing-masing berguna dalam situasi tertentu:

  • Kode Otorisasi: digunakan dengan aplikasi sisi server.
  • Implisit: Digunakan oleh aplikasi seluler atau web (aplikasi yang berjalan di perangkat pengguna).
  • Kredensial Kata Sandi Pemilik Sumber Daya: Digunakan oleh aplikasi terpercaya, seperti aplikasi yang merupakan bagian dari layanan itu sendiri.
  • Kredensial Klien: digunakan saat aplikasi mengakses API.

Jenis izin otorisasi: Kode otorisasi

Kode otorisasi adalah salah satu jenis izin otorisasi yang paling umum karena cocok untuk aplikasi server, di mana kode sumber aplikasi dan rahasia klien tidak tersedia untuk orang luar. Proses dalam hal ini didasarkan pada pengalihan, artinya aplikasi harus dapat berinteraksi dengan Agen pengguna(agen-pengguna), seperti browser web, dan menerima kode otorisasi API yang dialihkan melalui agen pengguna.

Mari kita gambarkan prosesnya dalam diagram:

Langkah 1: Tautkan dengan kode otorisasi

  • https://cloud.?response_type=code&client_id=CLIENT_ID &redirect_uri=CALLBACK_URL &scope=baca
  • : titik akhir otorisasi API.
  • client_id=CLIENT_ID: pengidentifikasi klien aplikasi (menggunakan pengidentifikasi ini, API memahami aplikasi mana yang meminta akses).
  • redirect_uri=CALLBACK_URL: URL tempat layanan akan mengarahkan ulang agen pengguna (browser) setelah mengeluarkan kode otorisasi.
  • response_type=kode: Menunjukkan bahwa aplikasi meminta akses dengan kode otorisasi.
  • cakupan = baca: Mengatur tingkat akses aplikasi (dalam hal ini, akses baca).

Langkah 3: Aplikasi menerima kode otorisasi

Jika pengguna memilih "Otorisasi Aplikasi", layanan mengalihkan agen pengguna (browser) ke URL pengalihan yang ditetapkan selama langkah pendaftaran klien (bersama dengan kode otorisasi). Tautan akan terlihat seperti ini (dalam contoh ini, aplikasi disebut “dropletbook.com”):

  • https://dropletbook.com/callback?code=AUTHORIZATION_CODE

Langkah 4: Aplikasi meminta token akses

Aplikasi meminta token akses dari API dengan mengirimkan kode otorisasi dan informasi otentikasi (termasuk rahasia klien) melayani. Di bawah ini adalah contoh permintaan POST untuk menerima token DigitalOcean:

  • https://cloud.?client_id=CLIENT_ID &client_secret=CLIENT_SECRET &grant_type=authorization_code&code=AUTHORIZATION_CODE &redirect_uri=CALLBACK_URL

Langkah 5: Aplikasi Mendapat Token Akses

  • ("access_token":"ACCESS_TOKEN ","token_type":"bearer","expires_in":2592000,"refresh_token":"REFRESH_TOKEN ","scope":"read","uid":100101,"info":( "nama":"Mark E. Mark","email":" [email dilindungi]"}}

Sekarang aplikasi resmi! Itu dapat menggunakan token untuk mengakses akun pengguna melalui API layanan dengan pembatasan akses yang ditetapkan hingga token kedaluwarsa atau token dicabut. Jika token dibuat untuk memperbarui token akses, token tersebut dapat digunakan untuk mendapatkan token akses baru saat token lama kedaluwarsa.

Jenis izin otorisasi: Implisit

Jenis izin otorisasi implisit digunakan oleh aplikasi seluler dan web (aplikasi yang berjalan di browser web) dengan privasi rahasia klien tidak dapat dijamin. Jenis izin implisit juga didasarkan pada pengalihan agen pengguna, di mana token akses diteruskan ke agen pengguna untuk transmisi lebih lanjut ke aplikasi. Ini pada gilirannya membuat token tersedia untuk pengguna dan aplikasi lain di perangkat pengguna. Selain itu, jenis izin otorisasi ini tidak mengautentikasi keaslian aplikasi, dan prosesnya sendiri bergantung pada URL pengalihan (terdaftar sebelumnya di layanan).

Prosesnya adalah sebagai berikut: aplikasi meminta pengguna untuk mengotorisasi dirinya sendiri, kemudian server otorisasi meneruskan token akses ke agen pengguna, yang meneruskan token tersebut ke aplikasi. Selanjutnya, kami menjelaskan prosesnya secara rinci.

Langkah 1: Tautan Otorisasi Tersirat

Dengan jenis izin otorisasi implisit, pengguna diberikan tautan yang meminta token dari API. Tautan ini terlihat hampir sama dengan tautan untuk metode sebelumnya (dengan kode otorisasi), kecuali jika diminta token alih-alih kode (perhatikan jenis respons token):

  • https://cloud.?response_type=token&client_id=CLIENT_ID &redirect_uri=CALLBACK_URL &scope=baca

Langkah 2: Pengguna mengotorisasi aplikasi

Saat pengguna mengklik sebuah tautan, mereka harus masuk terlebih dahulu untuk memverifikasi identitas mereka (jika mereka belum masuk, tentu saja). Setelah itu, layanan akan meminta pengguna untuk mengotorisasi atau menolak otorisasi aplikasi untuk mengakses akun pengguna. Contoh dialog seperti itu ditunjukkan di bawah ini:

Langkah 3: Agen pengguna menerima token akses dari URI redirect

  • https://dropletbook.com/callback#token=ACCESS_TOKEN

Langkah 4: Agen pengguna mengikuti URI pengalihan

Agen pengguna mengikuti URI pengalihan sambil mempertahankan token akses.

Langkah 5: Aplikasi mengeksekusi skrip ekstraksi token akses

Aplikasi mengembalikan halaman web yang berisi skrip untuk mengekstrak token akses dari URI pengalihan penuh yang disimpan oleh agen pengguna.

Langkah 6: Token Akses Diteruskan ke Aplikasi

Agen pengguna menjalankan skrip ekstraksi token akses dan kemudian meneruskan token yang diekstraksi ke aplikasi.

Sekarang aplikasi resmi! Itu dapat menggunakan token untuk mengakses akun pengguna melalui API layanan dengan pembatasan akses yang ditetapkan hingga token kedaluwarsa atau token dicabut.

Jenis izin otorisasi: kredensial pemilik sumber daya

Dengan jenis izin otorisasi ini, pengguna secara langsung menyediakan aplikasi dengan data otorisasi mereka di layanan (nama pengguna dan kata sandi). Aplikasi, pada gilirannya, menggunakan kredensial pengguna yang diterima untuk mendapatkan token akses dari layanan. Jenis izin otorisasi ini hanya boleh digunakan bila tidak ada opsi lain yang tersedia. Selain itu, jenis izin ini hanya boleh digunakan jika aplikasi dipercaya oleh pengguna (misalnya, merupakan bagian dari layanan itu sendiri, atau sistem operasi pengguna).

Proses dengan kredensial pemilik sumber daya

Setelah pengguna mengirimkan kredensial mereka ke aplikasi, aplikasi akan meminta token akses dari server otorisasi. Contoh permintaan POST mungkin terlihat seperti ini:

  • https://oauth.example.com/token?grant_type=password&username=USERNAME &password=PASSWORD &client_id=CLIENT_ID

Perhatian: DigitalOcean saat ini tidak mendukung jenis otorisasi kredensial pemilik sumber daya, jadi tautan di atas mengarah ke server otorisasi imajiner yang disebut "oauth.example.com".

Jenis Izin Otorisasi: Kredensial Klien

Jenis izin otorisasi yang menggunakan kredensial klien memungkinkan aplikasi mengakses akun layanannya sendiri. Ini bisa berguna, misalnya, saat aplikasi ingin memperbarui informasi pendaftaran layanannya sendiri atau mengalihkan URI, atau mengakses informasi lain yang disimpan di akun layanan aplikasi melalui API layanan.

Proses dengan kredensial klien

Aplikasi meminta token akses dengan mengirimkan kredensial, ID klien, dan rahasia klien ke server otorisasi. Contoh permintaan POST mungkin terlihat seperti ini:

  • https://oauth.example.com/token?grant_type=client_credentials&client_id=CLIENT_ID &client_secret=CLIENT_SECRET

Perhatian: DigitalOcean saat ini tidak mendukung jenis izin Otorisasi Kredensial Klien, jadi tautan di atas mengarah ke server otorisasi imajiner "oauth.example.com".

Contoh penggunaan token akses

Setelah aplikasi menerima token akses, ia dapat menggunakan token ini untuk mengakses akun pengguna melalui API layanan dengan batasan akses yang ditentukan hingga token kedaluwarsa atau token dicabut.

Di bawah ini adalah contoh permintaan API menggunakan curl . Perhatikan bahwa ini berisi token akses:

  • curl -X POST -H "Otorisasi: Pembawa ACCESS_TOKEN ""https://api.site/v2/$OBJECT "

Jika token akses valid, API akan memproses permintaan yang diterima. Jika token akses telah kedaluwarsa atau token tidak valid, API akan menampilkan error “invalid_request”.

Segarkan Token Akses

Setelah token akses kedaluwarsa, semua permintaan ke API yang menggunakannya akan mengembalikan kesalahan "Kesalahan Token Tidak Valid". Jika, saat membuat token akses, token penyegaran juga dibuat, yang terakhir dapat digunakan untuk mendapatkan token akses baru dari server otorisasi.

Berikut adalah contoh permintaan POST menggunakan token untuk me-refresh token akses untuk mendapatkan token akses baru:

  • https://cloud.?grant_type=refresh_token&client_id=CLIENT_ID &client_secret=CLIENT_SECRET &refresh_token=REFRESH_TOKEN

Kesimpulan

Ini menyimpulkan ikhtisar kami tentang OAuth 2. Sekarang Anda memiliki pemahaman dasar tentang cara kerja OAuth 2, serta waktu dan cara menggunakan jenis izin otorisasi yang ada.

Jika Anda ingin mempelajari lebih lanjut tentang OAuth 2, kami menyarankan Anda untuk membaca artikel berikut.

​Memperhatikan pelanggan mereka, tim layanan Invola menerapkan koneksi langsung ke email menggunakan teknologi OAuth 2.0.

Pada artikel ini, kami akan menjelaskan apa itu, cara kerjanya, dan bagaimana pengaruhnya terhadap keamanan data pengguna.
Kami akan menghilangkan sejumlah poin teknis, menyampaikan esensi teknologi dalam bahasa yang sederhana dan mudah dipahami oleh pengguna biasa.

Pengguna reguler layanan kadang-kadang tahu bagaimana keadaannya nyaman untuk menggunakan duplikat email, sering lupa mengirim surat lagi kepadanya. Kami menerima surat yang meminta kami merevisi algoritme untuk menerima faktur dan iklan demi koneksi langsung ke surat.

Setelah beberapa minggu kerja yang bermanfaat dari seorang programmer dan spesialis keamanan algoritma otorisasi diimplementasikan dan sekarang adalah cara utama untuk terhubung pelanggan ke layanan.

Apa itu OAuth?

Berbicara dalam istilah teknis yang kering, ini adalah protokol otorisasi yang memungkinkan Anda memberikan satu layanan (dalam hal ini Invola) hak untuk mengakses sumber daya pengguna di layanan lain (akses ke email).

Pengguna memiliki lebih banyak alasan untuk mempercayai aplikasi tersebut, karena pengguna dapat yakin bahwa akses tidak sah ke data pribadinya tidak mungkin dilakukan. Tanpa memiliki nama pengguna dan kata sandi, aplikasi akan dapat melakukan hanya itu tindakan dengan data diizinkan oleh pengguna, dan tidak ada yang lain.

Dalam istilah yang lebih sederhana, kami dapat mengatakan ini: layanan Invola terhubung ke email Anda untuk menerima faktur dan penawaran komersial, meskipun tidak memerlukan login dan kata sandi, tetapi meminta hak akses. Jika Anda konfirmasi, aplikasi mendapat akses hingga dicabut oleh pengguna, atau hingga aplikasi ada dan aktif sama sekali.

Komunikasi antara Invola dan server email menggunakan token akses (langkah 4-5), yang secara otomatis kedaluwarsa setelah satu jam dan diperbarui sesuai kebutuhan (secara otomatis, tanpa campur tangan pengguna, oleh perangkat lunak Invola).

Sekarang mari kita bicara tentang keamanan, dan mengapa otorisasi oleh OAuth lebih disukai daripada kata sandi masuk.

Saat Anda memberikan layanan apa pun dengan login dan kata sandi untuk mengakses akun (mail.ru, gmail.com), Anda sebenarnya memberikan kata sandi untuk seluruh akun (dengan cara ini Anda dapat mengakses, misalnya, disk, album foto, dan lainnya data pribadi).

Menyediakan akses melalui OAuth kamu sendiri mengontrol sumber daya yang mana akun Anda memberikan akses. Pertimbangkan contoh hak yang diminta saat menghubungkan ke Invola:

"Lihat dan kelola email" - untuk penerimaan faktur dan kutipan otomatis, " tampilan alamat" – untuk mendapatkan alamat email dari kotak surat, " tampilan profil" – untuk mendapatkan nama pengguna (diperlukan pada tahap pendaftaran).

Sayangnya, tidak semua server email(termasuk korporasi) mendukung otorisasi oleh teknologi OAuth, khususnya layanan Yandex.Mail yang populer. Jika email Anda ada di Yandex, Anda dapat terhubung ke layanan kami saat ini hanya menggunakan login dan kata sandi Anda.

Sedikit tentang keamanan.

Kami sangat memahami betapa pentingnya bagi bisnis untuk membocorkan data rahasia atau akses tidak sah ke data pelanggan, transaksi keuangan, korespondensi pribadi. Keamanan data adalah salah satu prioritas utama kami.

Token akses, serta kata sandi untuk mengakses email, disimpan di server database khusus yang aman menggunakan skema kriptografi berdasarkan kunci dinamis.

Akibatnya, perlu dicatat bahwa karyawan kami tidak memiliki akses ke server surat dan korespondensi pengguna kami dalam keadaan apa pun.

Semua komunikasi antara pengguna dan layanan, serta antara layanan dan server email dilakukan melalui saluran SSL yang aman, dengan kata lain, semua data yang dikirimkan di kedua arah dienkripsi dengan algoritme kriptografi yang kuat.

Jika Anda memiliki bisnis, Anda mengirimkan banyak faktur dan penawaran komersial kepada pelanggan Anda, maka Anda harus mencoba sistem kami. Invola mengirimkan peringatan otomatis, jika tidak ada jawaban di invoice, dan juga memantau reaksi pelanggan Anda terhadap invoice (mahal, waktu pengiriman lama, dll.). Sebagai akibat Anda mendapatkan peningkatan bagian dari tagihan yang dibayar, dan juga memiliki kesempatan untuk mengumpulkan statistik tentang kinerja manajer Anda, alasan umum kegagalan.


  1. Membuka browser bawaan dengan halaman otorisasi
  2. Pengguna diminta untuk mengkonfirmasi pemberian hak
  3. Jika pengguna setuju, browser akan mengarahkan ulang ke halaman rintisan di fragmen (setelah #) yang URL-nya ditambahkan token akses
  4. Aplikasi memotong pengalihan dan menerima token akses dari alamat halaman
Opsi ini memerlukan peningkatan jendela browser dalam aplikasi, tetapi tidak memerlukan sisi server dan panggilan server-ke-server tambahan untuk bertukar kode otorisasi pada token akses.
Contoh
Buka browser dengan halaman otorisasi:
> DAPATKAN /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

Setelah pengguna memberikan hak, terjadi pengalihan ke halaman rintisan standar, untuk Mail.Ru ini connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

Aplikasi harus mencegat pengalihan terakhir, dapatkan dari alamat access_token dan menggunakannya untuk mengakses sumber daya yang dilindungi.

Login dan otorisasi kata sandi

Otorisasi dengan login dan kata sandi adalah permintaan POST sederhana, yang mengembalikan token akses. Skema ini bukanlah hal yang baru, tetapi termasuk dalam standar umum dan hanya direkomendasikan bila opsi otorisasi lain tidak tersedia.
Contoh
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_ty [email dilindungi] corp.mail.ru& kata sandi=qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Deskripsi dalam spesifikasi

Memulihkan otorisasi sebelumnya

Biasanya, token akses memiliki umur simpan yang terbatas. Ini bisa berguna, misalnya, jika ditransmisikan melalui saluran terbuka. Untuk menghindari pemaksaan pengguna untuk masuk setelah tanggal kedaluwarsa token akses"dan, dalam semua opsi di atas, sebagai tambahan token akses"kamu bisa kembali lagi menyegarkan token. Itu bisa diperoleh token akses menggunakan permintaan HTTP, mirip dengan login dan otorisasi kata sandi.
Contoh
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < } |

OAuth 2 adalah protokol otorisasi yang menyediakan aplikasi dengan akses HTTP terbatas ke akun pengguna. Itu mengalihdayakan otentikasi pengguna ke layanan yang menghosting akun dan mengotorisasi aplikasi pihak ketiga dan memberi mereka akses ke akun pengguna. OAuth 2 memberikan otorisasi untuk aplikasi web dan perangkat seluler.

Panduan ini akan memperkenalkan Anda pada peran OAuth 2, jenis otorisasi, alur, dan kasus penggunaan OAuth 2.

Peran

Ada empat peran dalam OAuth:

  1. Pemilik sumber daya
  2. Klien
  3. server sumber daya
  4. Server otorisasi

Mari kita lihat lebih dekat setiap peran.

Pemilik sumber daya: pengguna

Pemilik sumber daya adalah pengguna yang mengautentikasi dengan aplikasi untuk mengakses akun mereka.

Aplikasi membatasi akses ke akun pengguna dengan bantuan izin (yaitu, hak untuk melakukan suatu tindakan: membaca, menulis, dll.).

Server Sumber Daya dan Otorisasi: API

Server sumber daya menyimpan akun pengguna yang aman, dan server otorisasi memverifikasi kredensial pengguna dan kemudian mengeluarkan token akses ke aplikasi.

Dari sudut pandang pengembang aplikasi, API layanan bertindak sebagai server sumber daya dan server otorisasi. Berikut ini, kami akan menyebut peran ini sebagai layanan atau API.

Klien: aplikasi

Klien adalah aplikasi yang ingin mengakses akun pengguna. Sebelum dapat melakukan ini, pengguna harus diberi otorisasi dalam aplikasi, dan API harus mengonfirmasi otorisasi tersebut.

Aliran protokol

Peran OAuth berinteraksi satu sama lain sebagai berikut:

  • Aplikasi meminta otorisasi pengguna untuk mengakses sumber daya layanan.
  • Jika pengguna diotorisasi atas permintaan aplikasi, aplikasi menerima otoritas.
  • Aplikasi meminta token akses dari server otorisasi (API).
  • Jika aplikasi diautentikasi dan kredensialnya valid, server otorisasi (API) mengeluarkan token akses ke aplikasi tersebut. Otorisasi selesai.
  • Aplikasi meminta sumber daya dari server sumber daya (API) dan menyediakan token akses untuk autentikasi.
  • Jika token akses valid, server sumber daya (API) menyajikan sumber daya untuk aplikasi.

Pendaftaran aplikasi

Sebelum Anda dapat menggunakan OAuth dalam aplikasi, Anda harus mendaftarkan aplikasi tersebut. Ini dilakukan melalui formulir pendaftaran di bagian Pengembang atau API situs web layanan, di mana Anda perlu memberikan informasi berikut:

  • Nama aplikasi;
  • Situs aplikasi;
  • Callback URL atau redirect URI (di sinilah layanan akan mengarahkan ulang pengguna setelah mereka melewati (atau gagal) otorisasi; bagian aplikasi ini akan memproses kode otorisasi atau token akses).

ID klien dan kunci rahasia

Setelah mendaftarkan aplikasi, layanan akan memberi Anda kredensial aplikasi, yang dapat ditemukan di bidang pengidentifikasi klien dan rahasia klien. ID Klien adalah string publik yang digunakan oleh API layanan untuk mengidentifikasi aplikasi; itu juga membuat URL otorisasi. Rahasia Klien memungkinkan API layanan untuk mengautentikasi aplikasi saat meminta akses ke akun pengguna. Data sensitif ini disimpan antara aplikasi dan API.

Izin Otorisasi

Izin otorisasi bergantung pada metode yang digunakan aplikasi untuk meminta otorisasi, serta jenis izin yang didukung oleh API. OAuth 2 mendefinisikan empat jenis izin, yang masing-masing berguna dalam cara yang berbeda:

  1. Kode konfirmasi: digunakan dalam aplikasi sisi server.
  2. Akses implisit: digunakan di aplikasi web dan seluler (aplikasi yang berjalan di perangkat pengguna).
  3. Memberikan kata sandi kepada klien: digunakan dalam aplikasi yang dikenal aman (misalnya, aplikasi yang dimiliki oleh suatu layanan).
  4. Otoritas Klien: Akses ke API aplikasi.

Kode konfirmasi

Kode konfirmasi adalah jenis otoritas yang paling umum, dioptimalkan untuk aplikasi sisi server di mana kode sumber ditutup dan Rahasia Klien tidak tersedia untuk orang luar. Alur ini berbasis pengalihan, artinya aplikasi harus dapat berinteraksi dengan agen pengguna (yaitu browser web pengguna) dan menerima kode otorisasi API yang dirutekan melalui agen pengguna.

Alur dengan kode konfirmasi terlihat seperti ini:

  1. Pengguna menerima tautan ke kode verifikasi.
  2. Pengguna berwenang. Dengan mengklik tautan, pengguna mengonfirmasi keaslian data. Jika data yang diberikan salah, otorisasi pengguna akan ditolak.
  3. Aplikasi menerima kode verifikasi. Layanan mengalihkan agen pengguna ke URI yang ditentukan saat klien mendaftar, bersama dengan kode verifikasi.
  4. Aplikasi meminta token akses dari API, memberikan kode konfirmasi dan data otorisasi, termasuk rahasia klien.
  5. Aplikasi menerima token akses jika otorisasi valid.

Aliran akses implisit

Alur akses implisit digunakan oleh aplikasi seluler atau aplikasi web di mana kerahasiaan rahasia klien tidak dapat dijamin. Alur ini juga didasarkan pada pengalihan, tetapi agen pengguna menerima token akses, setelah itu diteruskan ke aplikasi. Dengan demikian, dapat terlihat oleh pengguna atau aplikasi lain di perangkat pengguna. Selain itu, alur ini tidak mengautentikasi aplikasi, melainkan menggunakan URI (yang telah didaftarkan ke layanan).

Token penyegaran tidak didukung dengan akses implisit.

Alur akses implisit pada dasarnya berfungsi seperti ini: pengguna diminta untuk mengotorisasi dalam aplikasi, server otorisasi meneruskan token akses ke agen pengguna, yang meneruskannya ke aplikasi. Proses ini terlihat seperti ini secara lebih rinci:

  1. Pengguna menerima tautan akses implisit yang meminta token dari API.
  2. Pengguna diotorisasi dengan mengklik tautan. Jika pengguna tidak dapat masuk, dia akan ditolak aksesnya.
  3. Agen pengguna menerima token akses dan Redirect URI.
  4. Agen pengguna mengikuti Redirect URI.
  5. Aplikasi mengirimkan skrip pengambilan token akses. Aplikasi mengembalikan halaman web dengan skrip yang dapat mengekstrak token akses dari Redirect URI.
  6. Aplikasi menerima token akses. Otorisasi selesai.

Memberi klien kata sandi

Jenis ini menyiratkan bahwa pengguna meneruskan kredensial langsung ke aplikasi, yang menggunakannya untuk mendapatkan token akses. Jenis ini seharusnya hanya didukung di server otorisasi. Selain itu, ini hanya boleh digunakan jika aplikasi dapat dipercaya (misalnya milik layanan atau sistem operasi pengguna).

Setelah menerima kredensial pengguna, aplikasi meminta token akses dari server otorisasi. Jika kredensial benar, server otorisasi akan memberikan token akses. Otorisasi selesai.

Otoritas Klien

Jenis ini memungkinkan aplikasi terhubung ke akun layanannya sendiri. Alur seperti itu berguna jika aplikasi ingin memperbarui deskripsi terdaftarnya atau mengalihkan URI atau mengakses data lain yang disimpan di akun layanan.

Aplikasi meminta token akses dengan mengirimkan kredensial, ID klien, dan rahasia kliennya. . Jika kredensial benar, server otorisasi akan memberikan token akses. Otorisasi selesai.

Menggunakan token akses

Setelah menerima token akses, aplikasi dapat menggunakannya untuk mengakses akun pengguna melalui API.

Jika token valid, API akan memproses permintaan tersebut. Jika token tidak valid, API akan melontarkan kesalahan invalid_request.

Alur Token yang Dapat Disegarkan

Setelah token akses kedaluwarsa, API akan melontarkan kesalahan invalid_request. Jika aplikasi menerima token penyegaran bersama dengan token akses, sekarang aplikasi dapat menggunakannya untuk meminta token akses baru dari server otorisasi.

Anda sekarang sudah memahami dasar-dasar OAuth 2.

Tag: ,