Alur OAuth 2.0
Pemberian otorisasi dan token.
Alur OAuth 2.0 adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa yang Sebenarnya Diselesaikan OAuth 2.0
OAuth 2.0 adalah kerangka kerja otorisasi terdelegasi. OAuth memungkinkan pengguna memberikan akses terbatas kepada aplikasi pihak ketiga ke sumber daya mereka pada layanan lain tanpa membagikan kata sandi.
- OAuth berkaitan dengan otorisasi (apa yang boleh dilakukan aplikasi), bukan autentikasi (siapa pengguna tersebut).
- Aplikasi menerima
access_tokendengan cakupan tertentu, bukan kredensial pengguna.
Pihak yang bertahan harus mengingat: OAuth saja tidak membuktikan identitas. Menganggap token akses sebagai bukti masuk adalah kesalahan klasik yang ditangani oleh OIDC.
Empat Peran
Setiap alur OAuth melibatkan empat peran. Memetakan peran ini dengan benar sangat penting untuk pemodelan ancaman.
- Pemilik Sumber Daya pengguna yang memiliki data.
- Klien aplikasi yang meminta akses.
- Server Otorisasi (AS) menerbitkan token setelah persetujuan.
- Server Sumber Daya (RS) API yang menyimpan data terlindungi dan memvalidasi token.
Batas kepercayaan berada di antara peran-peran ini. Klien yang disusupi atau AS yang terlalu permisif akan melemahkan seluruh rantai.
Roles:
Resource Owner -> grants consent
Client -> requests + uses tokens
Authorization Server -> issues tokens
Resource Server -> validates tokensPemberian Otorisasi Kode
Pemberian Kode Otorisasi adalah alur yang direkomendasikan untuk aplikasi web dan seluler. Alur ini memisahkan pengalihan yang terlihat oleh pengguna dari pertukaran token rahasia.
- Pengguna dialihkan ke AS untuk melakukan autentikasi dan memberikan persetujuan.
- AS mengembalikan
codeyang berumur singkat ke URI pengalihan yang terdaftar. - Klien menukarkan kode tersebut (di sisi server) dengan token melalui kanal komunikasi terpisah.
Karena token diperoleh melalui kanal komunikasi terpisah, token tidak pernah muncul di bilah alamat atau riwayat peramban.
GET /authorize?response_type=code
&client_id=app123
&redirect_uri=https://app.example/cb
&scope=read:profile
&state=xyz
// then back-channel:
POST /token grant_type=authorization_code&code=...PKCE: Kunci Bukti untuk Pertukaran Kode
PKCE (RFC 7636) memperkuat pemberian kode otorisasi dan kini direkomendasikan untuk semua klien, termasuk klien rahasia.
- Klien membuat
code_verifieracak dan mengirimkan hashnya sebagaicode_challenge. - Saat pertukaran token, klien harus menyajikan pemverifikasi asli.
Hal ini mengikat kode ke peminta awal sehingga penyerang yang mencegat kode otorisasi tidak dapat menukarkannya.
code_verifier = random 43-128 chars
code_challenge = BASE64URL(SHA256(verifier))
/authorize ... &code_challenge=...&code_challenge_method=S256
/token ... &code_verifier=<original>Pemberian Kredensial Klien
Pemberian Kredensial Klien ditujukan untuk akses antar mesin ketika tidak ada pengguna yang terlibat (layanan sisi belakang yang memanggil API).
- Klien melakukan autentikasi dengan kredensialnya sendiri dan menerima token akses.
- Biasanya tidak ada persetujuan pengguna maupun token penyegaran.
Batasi cakupan token ini secara ketat dan ganti rahasia klien secara berkala. Jangan pernah menggunakan alur ini untuk menyamar sebagai pengguna akhir.
POST /token
grant_type=client_credentials
client_id=service-a
client_secret=***
scope=orders:readToken Akses vs Token Penyegaran
OAuth menerbitkan dua jenis token utama dengan masa berlaku dan aturan penanganan yang sangat berbeda.
- Token akses berumur singkat dan dikirim ke server sumber daya pada setiap panggilan. Perlakukan token ini sebagai kredensial pembawa.
- Token penyegaran berumur panjang dan hanya digunakan terhadap AS untuk memperoleh token akses baru.
Token penyegaran sangat berharga. Simpan dengan aman, ikat ke klien, dan dukung pencabutan.
POST /token
grant_type=refresh_token
refresh_token=<long-lived>
client_id=app123Token Bearer dan Transportasi
Sebagian besar token akses OAuth adalah token bearer: siapa pun yang memegang token dapat menggunakannya, seperti uang tunai.
- Selalu kirimkan melalui TLS; jangan pernah menaruhnya dalam URL karena token dapat bocor ke log dan perujuk.
- Kirimkan melalui header
Authorization. - Pertimbangkan token yang dibatasi pengirim (DPoP, mTLS) untuk API berisiko tinggi.
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
// AVOID:
GET /api/data?access_token=... // leaks in logsPemberian Implisit Sudah Tidak Digunakan Lagi
Pemberian implisit lama mengembalikan token secara langsung dalam fragmen URI pengalihan. Kini pemberian ini tidak dianjurkan oleh OAuth 2.0 Security BCP dan dihapus dalam OAuth 2.1.
- Token bocor melalui riwayat peramban, header perujuk, dan log.
- Tidak adanya saluran belakang menyebabkan autentikasi klien lebih lemah.
Sebagai gantinya, gunakan Kode Otorisasi dengan PKCE untuk SPA.
Parameter state dan CSRF
Parameter state melindungi tahap pengalihan dari CSRF. Klien membuat nilai acak, menyimpannya dalam sesi, lalu memverifikasinya saat panggilan balik.
- Jika
stateyang dikembalikan tidak cocok, tolak respons tersebut. - Dengan demikian, penyerang tidak dapat menyisipkan kode otorisasinya sendiri ke dalam sesi korban.
before: session.state = randomNonce()
/authorize ... &state=<nonce>
on callback:
if (req.state !== session.state) reject()Cakupan dan Hak Istimewa Minimum
Cakupan menyatakan tingkat perincian akses yang diberikan oleh token. Terapkan hak istimewa minimum di setiap tahap.
- Minta hanya cakupan yang diperlukan fitur tersebut (
read:profile, bukanadmin). - Server sumber daya harus menerapkan cakupan pada setiap titik akhir, bukan sekadar memercayai token yang valid.
Persetujuan yang terlalu luas merupakan risiko nyata yang umum: pengguna menyetujui aplikasi yang meminta jauh lebih banyak daripada yang diperlukan.
Kesalahan Konfigurasi OAuth yang Umum
Sebagian besar insiden OAuth berasal dari konfigurasi, bukan dari protokolnya sendiri.
- Pengalihan terbuka / pencocokan URI pengalihan yang longgar memungkinkan penyerang mencuri kode.
- Tidak adanya
stateatau PKCE memungkinkan CSRF dan injeksi kode. - Token akses berumur panjang tanpa pencabutan.
- Memperlakukan token akses sebagai pernyataan autentikasi.
Daftarkan URI pengalihan yang tepat dan validasi dengan ketat.
redirect_uri allowlist:
EXACT: https://app.example/cb
NOT: https://app.example/* (too broad)Pemeriksaan Singkat: Mengamankan Autentikasi SPA
Pilih alur modern yang benar untuk skenario di bawah ini.
Ringkasan: Alur OAuth 2.0
Kesimpulan utama:
- OAuth 2.0 adalah otorisasi terdelegasi, bukan autentikasi.
- Ada empat peran: pemilik sumber daya, klien, server otorisasi, dan server sumber daya.
- Kode Otorisasi + PKCE adalah pilihan bawaan untuk web, seluler, dan SPA.
- Kredensial Klien digunakan untuk akses antarmesin.
- Lindungi dengan
state, pencocokan URI pengalihan yang ketat, token akses berumur pendek, dan TLS di seluruh jalur komunikasi. - Pemberian implisit dan pemberian kata sandi sudah tidak digunakan lagi.
Belajar Cyber Security Academy dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 76
- Pelajaran
- 303
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Alur OAuth 2.0” gratis?
Ya — teks lengkap “Alur OAuth 2.0” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Alur OAuth 2.0”?
Pemberian otorisasi dan token. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?
Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Alur OAuth 2.0” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.