Panduan

Apa Itu OAuth? "Sign in with Google" dan Akses yang Didelegasikan, Dijelaskan

OAuth adalah standar terbuka yang memungkinkan pengguna memberi satu aplikasi akses terbatas ke akunnya di layanan lain, tanpa menyerahkan kata sandinya. Ketika Anda mengklik “Connect Google Calendar” dan melihat layar yang bertanya “Izinkan aplikasi ini melihat acara Anda?”, itulah OAuth. Aplikasi mendapatkan token hanya untuk apa yang Anda setujui, dan Anda bisa mencabutnya kapan saja. Mekanisme yang sama, ditambah sebuah lapisan bernama OpenID Connect, menggerakkan “Sign in with Google” dan tombol serupa.

Mengapa OAuth penting saat membangun dengan AI

OAuth muncul dalam dua situasi umum ketika Anda membangun aplikasi:

  1. Login sosial. Anda ingin pengguna Anda “Sign in with Google” (atau Apple, Microsoft, GitHub) alih-alih membuat kata sandi baru. Lihat cara menambahkan login ke aplikasi Anda.
  2. Terhubung ke akun pengguna di layanan lain. Aplikasi Anda perlu membaca kalender pengguna, memposting ke akun media sosial mereka, mengambil file dari drive cloud mereka, atau menyinkronkan data akuntansi mereka.

Dalam kedua kasus itu pembuat aplikasi AI Anda bisa menulis kodenya, tetapi beberapa langkah hanya bisa Anda lakukan sendiri: membuat aplikasi developer di penyedia, mendapatkan client ID dan client secret, mendaftarkan URL callback, dan untuk beberapa izin, melewati tinjauan penyedia. Memahami cara kerja OAuth membuat langkah-langkah itu — dan error yang dihasilkannya — tidak terlalu membingungkan. Untuk gambaran yang lebih besar tentang login, lihat apa itu autentikasi.

Analogi sehari-hari

Bayangkan kartu kunci kamar hotel. Saat check-in, resepsionis memastikan siapa Anda, lalu memberi kartu yang membuka kamar dan gym Anda — bukan kamar lain, bukan area staf — dan berhenti berfungsi saat check-out. Kartu itu tidak berisi paspor Anda. Jika hilang, resepsionis membatalkannya dan menerbitkan kartu baru.

  • Resepsionis adalah authorization server (halaman login Google).
  • Pemeriksaan identitas Anda adalah Anda yang masuk ke Google.
  • Kartu kunci adalah access token.
  • “Hanya kamar dan gym” adalah scope yang Anda setujui.
  • Check-out adalah token yang kedaluwarsa, atau Anda mencabut akses.

Aplikasi yang Anda gunakan tidak pernah melihat kata sandi Google Anda, hanya kartu kuncinya.

Cara kerja OAuth, langkah demi langkah

Alur yang paling umum untuk aplikasi web adalah authorization code flow. Berikut yang terjadi ketika pengguna menghubungkan Google Calendar-nya ke aplikasi penjadwalan:

  1. Klik. Pengguna mengklik “Connect Google Calendar.”
  2. Alihkan ke penyedia. Aplikasi mengirim browser ke Google dengan client ID-nya, scope yang diminta (membaca acara kalender), dan redirect URI tempat Google harus mengembalikan pengguna.
  3. Masuk dan setujui. Pengguna masuk ke Google (jika belum) dan melihat layar persetujuan yang mencantumkan apa yang diminta aplikasi. Mereka mengklik Allow.
  4. Kembali dengan kode. Google mengalihkan browser ke redirect URI aplikasi dengan authorization code sekali pakai yang berumur pendek.
  5. Ditukar di server. Server aplikasi mengirim kode itu, bersama client secret-nya, langsung ke Google dan menerima access token (dan sering kali refresh token).
  6. Pakai API. Server memanggil API Google Calendar dengan access token dan mendapatkan acara pengguna.

Callback pada langkah 4 kira-kira terlihat seperti ini:

https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9

Dan respons token pada langkah 5 berupa JSON seperti:

{
  "access_token": "ya29.a0Af...",
  "expires_in": 3599,
  "refresh_token": "1//0gL...",
  "scope": "https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

Poin desain yang penting: pertukaran token terjadi server-ke-server, sehingga client secret dan token tidak perlu melewati browser.

OAuth vs OpenID Connect vs login buatan sendiri

Yang dijawabnyaContoh
OAuth 2.0“Apa yang boleh dilakukan aplikasi ini atas nama pengguna?” (otorisasi)Membaca kalender pengguna
OpenID Connect (OIDC)“Siapa pengguna ini?” (autentikasi), dibangun di atas OAuth“Sign in with Google” yang mengembalikan email terverifikasi
Login buatan sendiri“Apakah ini kata sandi yang benar untuk akun ini?”Email dan kata sandi yang disimpan (di-hash) di database Anda

Banyak aplikasi menggabungkan ketiganya: login dengan email dan kata sandi, ditambah “Sign in with Google” lewat OIDC, ditambah koneksi OAuth terpisah ke layanan lain.

Istilah kunci

IstilahArti
Provider / authorization serverLayanan tempat pengguna masuk dan memberi akses — Google, Microsoft, GitHub.
ClientAplikasi Anda, sebagaimana terdaftar di penyedia.
Client IDPengenal publik aplikasi Anda di penyedia.
Client secretKata sandi privat aplikasi Anda di penyedia. Hanya di server.
ScopeIzin spesifik, seperti “membaca kalender” atau “melihat alamat email.”
Consent screenHalaman tempat pengguna melihat dan menyetujui scope yang diminta.
Redirect URI / callback URLTempat penyedia mengembalikan pengguna. Harus didaftarkan lebih dulu dan cocok persis.
Access tokenKredensial berumur pendek untuk memanggil API.
Refresh tokenKredensial berumur lebih panjang untuk mendapatkan access token baru. Simpan seperti kata sandi.
ID tokenDalam OIDC, token bertanda tangan yang menjelaskan siapa pengguna itu.
PKCEPemeriksaan tambahan (“proof key”) yang mencegah kode yang disadap dipakai. Direkomendasikan untuk semua klien.
stateNilai acak yang melindungi alur dari permintaan palsu.

Kesalahpahaman umum

  • “OAuth adalah sistem login.” OAuth biasa hanya memberi akses; OpenID Connect yang menangani identitas. Menggunakan access token mentah sebagai bukti siapa seseorang pernah menyebabkan bug keamanan yang nyata.
  • “Aplikasi mendapatkan kata sandi saya.” Tidak pernah. Itulah intinya.
  • “Meminta lebih banyak scope itu tidak berbahaya.” Pengguna lebih waspada terhadap permintaan yang luas, dan penyedia seperti Google bisa mewajibkan tinjauan aplikasi untuk scope yang sensitif atau dibatasi. Mintalah hanya yang Anda butuhkan.
  • “Client secret boleh diletakkan di frontend.” Apa pun di kode browser bersifat publik. Simpan di rahasia sisi server.
  • “Jika berfungsi saat pengujian, pasti berfungsi di produksi.” Penyedia sering membatasi aplikasi yang belum diverifikasi — misalnya hanya untuk pengguna uji yang terdaftar — dan redirect URI untuk domain live Anda harus didaftarkan secara terpisah.
  • “Token berlaku selamanya.” Access token kedaluwarsa dengan cepat, dan pengguna bisa mencabut akses. Aplikasi Anda harus menangani keduanya dengan baik.

Yang sebaiknya ditanyakan ke pembuat aplikasi AI

  • “Tambahkan ‘Sign in with Google’ menggunakan OpenID Connect dengan library autentikasi yang terawat baik — jangan tulis sendiri alur OAuth-nya.”
  • “Gunakan authorization code flow dengan PKCE dan periksa parameter state.”
  • “Baca client ID dan client secret dari variabel environment di server.”
  • “Minta hanya scope yang kita butuhkan: akses kalender hanya-baca.”
  • “Beri tahu saya setiap redirect URL yang perlu didaftarkan di konsol penyedia, untuk preview, URL yang dipublikasikan, dan domain kustom saya.”
  • “Simpan refresh token terenkripsi di database, dan tangani token yang kedaluwarsa atau dicabut dengan meminta pengguna menghubungkan ulang.”
  • “Biarkan pengguna memutus integrasi dari halaman pengaturan mereka.”

OAuth dan Mythex

Mythex tidak memiliki login pengguna akhir bawaan untuk aplikasi yang Anda bangun; dokumentasinya menjelaskan pendekatan bawa-sendiri — Anda memilih library autentikasi atau penyedia hosted, menyimpan kuncinya sebagai rahasia proyek, dan agent menulis kodenya. Resep menambahkan autentikasi memiliki starter prompt untuk ini. Anda juga akan menemui OAuth di Mythex sendiri: Anda bisa mendaftar dengan Google, menghubungkan GitHub untuk sinkronisasi repo memakai OAuth GitHub, dan klien AI yang terhubung ke Mythex lewat MCP melewati halaman persetujuan OAuth. Untuk pembahasan lebih lanjut, lihat apa itu autentikasi dan apa itu two-factor authentication.

Pertanyaan

Apa itu OAuth dengan bahasa sederhana?

OAuth adalah cara standar bagi pengguna untuk membiarkan satu aplikasi mengakses akunnya di layanan lain — misalnya membiarkan aplikasi penjadwalan membaca Google Calendar mereka — tanpa memberikan kata sandi kepada aplikasi itu. Pengguna menyetujui izin tertentu, dan aplikasi menerima token yang hanya bisa dipakai untuk izin tersebut.

Apakah OAuth sama dengan "Sign in with Google"?

"Sign in with Google" dibangun di atas OAuth 2.0 ditambah OpenID Connect, sebuah lapisan di atas OAuth yang menambahkan cara standar untuk memberi tahu aplikasi siapa penggunanya. OAuth sendiri berkaitan dengan pemberian akses; OpenID Connect-lah yang menjadikannya login.

Apa itu access token OAuth?

Access token adalah kredensial yang dikirim aplikasi ke API sebuah layanan untuk membuktikan bahwa ia sudah diberi akses. Biasanya berumur pendek dan dibatasi pada izin (scope) yang disetujui pengguna. Refresh token, jika diterbitkan, memungkinkan aplikasi mendapatkan access token baru tanpa meminta pengguna lagi.

Apa arti redirect_uri_mismatch?

Artinya URL callback yang dikirim aplikasi Anda saat login tidak sama persis dengan yang terdaftar di konsol developer penyedia. Tambahkan URL yang tepat — termasuk https, domain, path, dan garis miring di akhir jika ada — untuk setiap alamat tempat aplikasi Anda berjalan.

Apakah OAuth aman?

OAuth 2.0 banyak dipakai dan aman jika diimplementasikan dengan benar: memakai authorization code flow dengan PKCE, URL redirect yang tepat, parameter state, serta menyimpan client secret dan token di server. Sebagian besar masalah berasal dari jalan pintas dalam implementasi, itulah sebabnya disarankan memakai library yang terawat dengan baik.

Mythex · Pricing · Bangun apa pun dengan AI · Template website dan aplikasi · Mythex dibandingkan · Glosarium membuat aplikasi dengan AI · Alat gratis untuk membuat aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)