Panduan

Apa Itu OAuth? “Sign in with Google” dan Akses Diwakilkan Dijelaskan

OAuth ialah standard terbuka yang membolehkan pengguna memberikan satu aplikasi akses terhad kepada akaunnya pada perkhidmatan lain, tanpa menyerahkan kata laluannya. Apabila anda klik “Connect Google Calendar” dan melihat skrin yang bertanya “Benarkan aplikasi ini melihat acara anda?”, itulah OAuth. Aplikasi menerima token untuk apa yang tepat anda luluskan, yang boleh anda batalkan bila-bila masa. Mekanisme yang sama, dengan lapisan tambahan yang dipanggil OpenID Connect, menggerakkan “Sign in with Google” dan butang serupa.

Mengapa OAuth penting apabila membina dengan AI

OAuth muncul dalam dua situasi biasa apabila anda membina aplikasi:

  1. Log masuk sosial. Anda mahu pengguna anda “Sign in with Google” (atau Apple, Microsoft, GitHub) dan bukannya mencipta kata laluan lain. Lihat cara menambah log masuk pada aplikasi anda.
  2. Menyambung ke akaun pengguna pada perkhidmatan lain. Aplikasi anda perlu membaca kalendar pengguna, menghantar ke akaun media sosial mereka, mengambil fail daripada pemacu awan mereka atau menyegerakkan data perakaunan mereka.

Dalam kedua-dua kes, pembina AI anda boleh menulis kod, tetapi ada langkah tertentu yang hanya anda boleh lakukan: mencipta aplikasi pembangun dengan pembekal, mendapatkan client ID dan client secret, mendaftarkan URL panggil balik dan, untuk sesetengah kebenaran, melepasi semakan pembekal. Mengetahui cara OAuth berfungsi menjadikan langkah-langkah itu — dan ralat yang dihasilkannya — kurang misteri. Untuk gambaran yang lebih luas tentang log masuk, lihat apa itu pengesahan.

Analogi harian

Fikirkan kad kunci hotel. Semasa daftar masuk, kaunter depan mengesahkan siapa anda, kemudian memberi anda kad yang membuka bilik anda dan gim — bukan bilik lain, bukan kawasan kakitangan — dan berhenti berfungsi apabila anda daftar keluar. Kad itu tidak mengandungi pasport anda. Jika anda hilang, kaunter membatalkannya dan mengeluarkan yang baharu.

  • Kaunter depan ialah pelayan kebenaran (halaman log masuk Google).
  • Pemeriksaan ID anda ialah anda log masuk ke Google.
  • Kad kunci ialah token akses.
  • “Bilik dan gim sahaja” ialah skop yang anda luluskan.
  • Daftar keluar ialah token tamat tempoh, atau anda membatalkan akses.

Aplikasi yang anda gunakan tidak pernah melihat kata laluan Google anda, hanya kad kunci itu.

Cara OAuth berfungsi, langkah demi langkah

Aliran yang paling lazim untuk aplikasi web ialah aliran kod kebenaran (authorization code flow). Inilah yang berlaku apabila pengguna menyambungkan Google Calendar mereka ke aplikasi penjadualan:

  1. Klik. Pengguna klik “Connect Google Calendar.”
  2. Ubah hala ke pembekal. Aplikasi menghantar pelayar ke Google dengan client ID-nya, skop yang diinginkannya (baca acara kalendar) dan URI ubah hala tempat Google perlu menghantar pengguna kembali.
  3. Log masuk dan persetujuan. Pengguna log masuk ke Google (jika belum) dan melihat skrin persetujuan yang menyenaraikan apa yang diminta aplikasi. Mereka klik Benarkan.
  4. Kembali dengan kod. Google mengubah hala pelayar ke URI ubah hala aplikasi dengan kod kebenaran yang pendek dan sekali guna.
  5. Tukar di pelayan. Pelayan aplikasi menghantar kod itu, bersama rahsia pelanggannya, terus kepada Google dan menerima token akses (dan selalunya token segar).
  6. Gunakan API. Pelayan memanggil API Google Calendar dengan token akses dan mendapat acara pengguna.

Panggil balik dalam langkah 4 kelihatan seperti ini:

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

Dan respons token dalam langkah 5 ialah 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 reka bentuk yang penting: pertukaran token berlaku antara pelayan dengan pelayan, jadi rahsia pelanggan dan token tidak perlu melalui pelayar.

OAuth vs OpenID Connect vs log masuk anda sendiri

Apa yang dijawabnyaContoh
OAuth 2.0“Apakah yang dibenarkan aplikasi ini lakukan bagi pihak pengguna?” (kebenaran)Membaca kalendar pengguna
OpenID Connect (OIDC)“Siapakah pengguna ini?” (pengesahan), dibina di atas OAuth“Sign in with Google” yang mengembalikan e-mel yang disahkan
Log masuk anda sendiri“Adakah ini kata laluan yang betul untuk akaun ini?”E-mel dan kata laluan yang disimpan (dicincang) dalam pangkalan data anda

Banyak aplikasi menggabungkannya: log masuk e-mel-dan-kata-laluan, ditambah “Sign in with Google” melalui OIDC, ditambah sambungan OAuth berasingan ke perkhidmatan lain.

Istilah utama

IstilahMaksud
Pembekal / pelayan kebenaranPerkhidmatan tempat pengguna log masuk dan memberikan akses — Google, Microsoft, GitHub.
KlienAplikasi anda, seperti yang didaftarkan dengan pembekal.
Client IDPengecam awam aplikasi anda dengan pembekal.
Client secretKata laluan peribadi aplikasi anda dengan pembekal. Khusus pelayan.
Skop (scope)Kebenaran tertentu, seperti “baca kalendar” atau “lihat alamat e-mel”.
Skrin persetujuanHalaman tempat pengguna melihat dan meluluskan skop yang diminta.
URI ubah hala / URL panggil balikTempat pembekal menghantar pengguna kembali. Mesti didaftarkan terlebih dahulu dan sepadan tepat.
Token aksesKelayakan berjangka pendek untuk memanggil API.
Token segar (refresh token)Kelayakan yang lebih panjang untuk mendapatkan token akses baharu. Simpan seperti kata laluan.
ID tokenDalam OIDC, token bertandatangan yang menerangkan siapa pengguna itu.
PKCESemakan tambahan (“proof key”) yang menghalang kod yang dipintas daripada digunakan. Disyorkan untuk semua klien.
stateNilai rawak yang melindungi aliran daripada permintaan palsu.

Salah faham lazim

  • “OAuth ialah sistem log masuk.” OAuth biasa memberikan akses; OpenID Connect mengendalikan identiti. Menggunakan token akses semata-mata sebagai bukti siapa seseorang pernah menyebabkan pepijat keselamatan yang sebenar.
  • “Aplikasi itu mendapat kata laluan saya.” Ia tidak pernah berbuat begitu. Itulah tujuannya.
  • “Meminta lebih banyak skop itu tidak memudaratkan.” Pengguna lebih berhati-hati dengan permintaan yang luas, dan pembekal seperti Google mungkin memerlukan semakan aplikasi untuk skop yang sensitif atau terhad. Minta hanya apa yang anda perlukan.
  • “Rahsia pelanggan boleh diletakkan di bahagian hadapan.” Apa sahaja dalam kod pelayar adalah awam. Simpan dalam rahsia pelayan.
  • “Ia berfungsi dalam ujian, jadi ia akan berfungsi dalam pengeluaran.” Pembekal sering mengehadkan aplikasi yang belum disahkan — contohnya, kepada pengguna ujian yang disenaraikan — dan URI ubah hala untuk domain langsung anda mesti didaftarkan secara berasingan.
  • “Token berlanjutan selamanya.” Token akses tamat tempoh dengan cepat, dan pengguna boleh membatalkan akses. Aplikasi anda perlu mengendalikan kedua-duanya dengan baik.

Apa yang perlu diminta kepada pembina AI anda

  • “Tambahkan ‘Sign in with Google’ menggunakan OpenID Connect dengan pustaka auth yang diselenggara dengan baik — jangan tulis sendiri aliran OAuth.”
  • “Gunakan aliran kod kebenaran dengan PKCE dan semak parameter state.”
  • “Baca client ID dan client secret daripada pembolehubah persekitaran di pelayan.”
  • “Minta hanya skop yang kita perlukan: akses kalendar baca sahaja.”
  • “Beritahu saya setiap URL ubah hala yang perlu didaftarkan dalam konsol pembekal, untuk pratonton, URL yang diterbitkan dan domain tersuai saya.”
  • “Simpan token segar yang disulitkan dalam pangkalan data, dan kendalikan token yang tamat tempoh atau dibatalkan dengan meminta pengguna menyambung semula.”
  • “Benarkan pengguna memutuskan sambungan integrasi daripada halaman tetapan mereka.”

OAuth dan Mythex

Mythex tidak mempunyai log masuk pengguna terbina dalam untuk aplikasi yang anda bina; dokumentasinya menerangkan pendekatan bawa-sendiri — anda memilih pustaka auth atau pembekal yang dihoskan, menyimpan kuncinya sebagai rahsia projek, dan ejen menulis kodnya. Resipi tambah pengesahan mempunyai gesaan permulaan untuk ini. Anda juga akan berjumpa OAuth dalam Mythex itu sendiri: anda boleh mendaftar dengan Google, menyambungkan GitHub untuk penyegerakan repositori menggunakan OAuth GitHub, dan pembantu AI yang menyambung ke Mythex melalui MCP melalui halaman persetujuan OAuth. Untuk maklumat lanjut, lihat apa itu pengesahan dan apa itu pengesahan dua faktor.

Soalan lazim

Apakah OAuth dalam istilah mudah?

OAuth ialah cara piawai untuk pengguna membenarkan satu aplikasi mengakses akaun mereka di perkhidmatan lain — seperti membenarkan aplikasi penjadualan membaca Google Calendar mereka — tanpa memberikan kata laluan mereka kepada aplikasi itu. Pengguna meluluskan kebenaran tertentu, dan aplikasi menerima token yang boleh digunakannya untuk perkara-perkara itu sahaja.

Adakah OAuth sama dengan “Sign in with Google”?

“Sign in with Google” dibina di atas OAuth 2.0 ditambah OpenID Connect, lapisan di atas OAuth yang menambah cara piawai untuk memberitahu aplikasi siapa pengguna itu. OAuth sendiri berkaitan dengan memberikan akses; OpenID Connect ialah yang menjadikannya log masuk.

Apakah token akses OAuth?

Token akses ialah kelayakan yang dihantar aplikasi ke API sesuatu perkhidmatan untuk membuktikan ia telah diberikan akses. Ia biasanya berjangka pendek dan terhad kepada kebenaran (skop) yang diluluskan pengguna. Token segar, jika dikeluarkan, membolehkan aplikasi mendapatkan token akses baharu tanpa bertanya kepada pengguna sekali lagi.

Apakah maksud redirect_uri_mismatch?

Ia bermakna URL panggil balik yang dihantar aplikasi anda semasa log masuk tidak sepadan tepat dengan satu yang didaftarkan dalam konsol pembangun pembekal. Tambahkan URL tepat — termasuk https, domain, laluan dan sebarang garis miring di hujung — untuk setiap alamat tempat aplikasi anda berjalan.

Adakah OAuth selamat?

OAuth 2.0 digunakan secara meluas dan selamat apabila dilaksanakan dengan betul: menggunakan aliran kod kebenaran dengan PKCE, URL ubah hala yang tepat, parameter state, dan memastikan rahsia pelanggan serta token kekal di pelayan. Kebanyakan masalah datang daripada jalan pintas dalam pelaksanaan, sebab itulah pustaka yang diselenggara dengan baik disyorkan.

Mythex · Pricing · Bina apa sahaja dengan AI · Templat laman web dan aplikasi · Mythex dibandingkan · Glosari pembinaan aplikasi AI · Alat percuma untuk membina 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 Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी မြန်မာ 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 简体中文 繁體中文(香港) 繁體中文(台灣)