Kamu mungkin sudah menghadapi hal ini. Login aplikasi berfungsi, pengguna dapat masuk dengan Google, Microsoft, atau email, dan API menerima token. Kemudian pertanyaan-pertanyaan dasar mulai muncul. Apakah pengguna ini dapat melihat faktur dari akun lain? Apakah aplikasi desktop menyimpan token akses secara lokal? Bagaimana kamu menghandle persetujuan dalam Capacitor build tanpa mengungkapkan keadaan di antara layer webview dan native?
Otorisasi aplikasi tidak hanya tentang centang kotak, tetapi juga mempengaruhi kepercayaan produk, tanggapan insiden, dan hasil tinjauan aplikasi. Dalam aplikasi multi-platform, terutama dengan Capacitor dan Electron, bagian yang sulit bukanlah memahami konsep otorisasi. Melainkan menerapkan otorisasi di tempat-tempat di mana asumsi browser tidak berlaku lagi, penyimpanan yang aman berperilaku berbeda per platform, dan shortcut di klien menciptakan risiko server.
Isi Kandungan
- Arti Sebenarnya Otorisasi Aplikasi
- The Building Blocks of Authorization
- Model dan Protokol Otorisasi Umum
- Anatomi Aliran OAuth 2.0
- Ancaman Keamanan dan Praktik Terbaik yang Diperlukan
- Polanya Implementasi untuk Capacitor dan Electron
- Jalan Anda ke Otorisasi Aplikasi yang Aman
Apa yang Dimaksudkan dengan Otorisasi Aplikasi
Seorang pengguna menginstal aplikasi Anda, mengetuk “Lanjutkan dengan Google,” masuk dengan berhasil, dan kemudian mendapatkan layar persetujuan yang bertanya apakah aplikasi dapat membaca kontak atau data kalender. Saat itu mengandung kedua sisi cerita akses. Pengenalan identitas dikonfirmasi. Layar persetujuan menentukan apa yang dapat dilakukan aplikasi setelah identitas diketahui.
Perbedaan itu masih membuat tim tersandung. Autentikasi menunjukkan siapa pengguna itu. Autorisasi menentukan apa yang pengguna, sesi, atau aplikasi itu bisa akses. ID membawa Anda ke dalam gedung. Kunci menentukan pintu mana yang terbuka.
Dalam kerja aplikasi, perbedaan itu penting karena tim sering kali memastikan alur login dan kemudian mengabaikan desain setelahnya. Mereka percaya token terlalu luas, melewatkan pengecekan izin server, atau membiarkan klien mengatur aturan akses yang seharusnya berada di kebijakan. Itu bagaimana 'pengguna sudah masuk' secara halus berubah menjadi 'pengguna bisa mengakses terlalu banyak'.
Autorisasi adalah tempat di mana kepercayaan menjadi konkrit. Pengguna tidak hanya peduli bahwa aplikasi Anda tahu siapa mereka. Mereka peduli bahwa hanya menyentuh apa yang mereka setujui.
Ada tiga aktor yang perlu Anda ingat:
- Pengguna yang masuk dan mungkin memberikan persetujuan.
- The application yang meminta akses atas nama pengguna.
- Oleh pemilik sumber atau API yang melindungi data dan menerapkan keputusan.
Ini berarti, pengaturan akses aplikasi juga melengkung dengan kontrol akses yang lebih kuat seperti MFA. Sejak Januari 2023, sekitar 66% pengguna di seluruh dunia menggunakan MFA, dan 83% dari lebih dari 1.000 profesional IT SME yang diwawancarai memerlukan MFA untuk akses ke semua sumber daya perusahaan dalam survei JumpCloud 2024 according to roundup statistik MFA JumpCloudItu tidak menggantikan otorisasi, tetapi meningkatkan standar bagi siapa yang berhak meminta akses terlebih dahulu.
Jika tim Anda sedang mengatur peran, ruang lingkup, dan akses yang didelegasikan, ini adalah ringkasan tentang pengelolaan akses aplikasi sebuah teman yang berguna untuk pilihan implementasi yang dibahas di sini.
The Building Blocks of Authorization
Otorisasi menjadi lebih mudah ketika Anda berhenti melihatnya sebagai keajaiban di dalam token. Model mental yang lebih baik adalah hotel.
Model mental hotel kunci adalah yang baik
Seorang tamu berjalan ke meja resepsionis dan menunjukkan identitasnya. Hotel memverifikasi identitas, membuat catatan keberangkatan, dan mengeluarkan kunci hotel. Kartu itu tidak membuktikan siapa tamu itu setiap kali pintu dibuka. Kartu itu membawa izin untuk mengakses tempat tertentu selama periode waktu yang terbatas.
Aplikasi Anda bekerja sama seperti itu.

Poin penting adalah bahwa kartu itu bukan kebijakan. Kartu itu mencerminkan kebijakan. Pintu-pintu masih memerlukan sistem yang memeriksa apakah kartu itu boleh membuka kunci tertentu. Di software, itu adalah API gateway, middleware backend, mesin kebijakan, atau lapisan otorisasi layanan.
Kata-kata yang penting dalam sistem nyata
Principal
Pengguna atau aktor yang meminta akses. Biasanya pengguna, tetapi juga bisa perangkat, tugas latar belakang, atau akun layanan.
Resource
Hal yang dilindungi. Proyek, faktur, jalur admin, file, API endpoint, atau satu rekaman di database.
Ruang Lingkup
Setelan aksi yang diminta. Baca profil. Unggah file. Kelola tagihan. Ruang lingkup haruslah sempit dan mudah dipahami.
Persetujuan
Persetujuan pengguna untuk tingkat akses yang diminta. Layar persetujuan yang baik membuat permintaan mudah dibaca. Yang buruk meminta segalanya.
Token Akses
Kredensial yang klien presentasikan ke server sumber daya setelah otorisasi berhasil. Harus dianggap sebagai data sensitif.
Banyak kesalahan implementasi berasal dari mengompres semua itu ke dalam asumsi tunggal: “pengguna memiliki token, jadi biarkan mereka masuk.” Asumsi itu tidak berlaku di produksi. Token mungkin sah tetapi masih salah untuk aksi saat ini, tenant, lingkungan, atau sumber daya.
Untuk tim mobile dan desktop, penanganan token memerlukan perhatian khusus karena penyimpanan adalah bagian dari sistem otorisasi, baik Anda suka atau tidak. Jika klien menyimpan artefak akses dengan tidak hati-hati, desain kebijakan Anda tidak akan menyelamatkan Anda nanti. Panduan ini tentang Pengamanan Token untuk Pengembang Mobile sebaiknya Anda tinjau sebelum mengirim.
A durable rule is simple. Keep authentication, consent, token issuance, and server-side enforcement separate in your head and in your code. Teams that merge them usually end up debugging permission bugs in the wrong layer.
Model-Model Otorisasi Umum dan Protokol
Ketika tim mengatakan “kami menggunakan OAuth,” mereka sering kali berarti beberapa hal yang berbeda sekaligus. Itu adalah bagian dari kebingungan. Protokol dan model otorisasi menyelesaikan masalah yang berbeda.
Protokol mengelola percakapan
OAuth 2.0 merupakan utamanya tentang otorisasi yang didelegasikan. Ia mendefinisikan bagaimana sebuah aplikasi dapat meminta dan menerima izin untuk bertindak atas nama pengguna tanpa menangani kata sandi pengguna secara langsung.
OpenID Connect, atau OIDC, berada di atas OAuth 2.0 dan menambahkan informasi identitas. Dalam hal praktis, OAuth menjawab “apa yang dapat aplikasi lakukan,” sementara OIDC membantu menjawab “siapa yang masuk.”
Perbedaan ini sangat penting dalam aplikasi Capacitor dan Electron karena banyak bug dimulai dengan menggunakan token ID di mana token akses diharapkan, atau menganggap bahwa masuk sukses berarti API harus memberikan akses untuk setiap aksi downstream. Tidak seharusnya.
Jika Anda menghubungkannya ke aplikasi hybrid, langkah demi langkah Petunjuk implementasi OAuth2 untuk aplikasi Capacitor merupakan jenis sumber daya yang mencegah banyak kesalahan aliran yang dapat dihindari.
Model mengelola logika keputusan
Dalam sistem Anda sendiri, Anda masih perlu aturan untuk menentukan apakah akses harus diberikan. Itu adalah bagian dari RBAC dan ABAC datang
Akses Kontrol Berdasarkan Peran (Role-Based Access Control) izin peta digunakan untuk menentukan peran seperti admin, editor, agen dukungan, atau penonton. Hal ini umum karena dapat dipahami, dapat diverifikasi, dan relatif stabil. Menurut Diskusi BrightSec tentang autentikasi dan otorisasi yang aman, RBAC is the industry-standard mechanism for enforcing fine-grained permissionsdan bukti yang dikutip di sana menyatakan bahwa implementasi RBAC dengan struktur peran hierarkis dan audit izin secara berkala RBAC adalah mekanisme standar industri untuk menerapkan izin yang halus.
Kontrol Akses Berdasarkan Sifat (ABAC) makes decisions using attributes instead of only roles. That can include department, device posture, record ownership, account tier, geography, request time, or whether the session passed MFA. ABAC is more expressive, but it’s also easier to make opaque if you don’t document policy well.
Aturan praktis: Mulai dengan RBAC ketika hak akses produk Anda stabil dan mudah dibaca. Tambahkan ABAC di mana konteks memang mempengaruhi keputusan.
RBAC vs. ABAC secara singkat
| Kriteria | Pengendalian Akses Berdasarkan Peran (RBAC) | Pengendalian Akses Berdasarkan Atribut (ABAC) |
|---|---|---|
| Ide utama | Akses diberikan berdasarkan peran | Akses diberikan dengan mengevaluasi atribut |
| Pilihan terbaik | Tools internal, panel dashboard, panel administrator | Aplikasi multi-tenant, alur kerja yang diatur, akses yang bergantung pada konteks |
| Efisiensi berpikir | Mudah dipahami oleh tim dan auditor | Lebih fleksibel, tetapi lebih sulit untuk di-debug |
| Pengelolaan perubahan | Tambah atau modifikasi peran | Penyesuaian kebijakan dan aturan atribut |
| Mode gagal umum | Penyebaran peran | Penyebaran kebijakan dan kasus sampingan tersembunyi |
| Contoh | “Agen dukungan dapat melihat tiket” | “Agen dukungan dapat melihat tiket untuk akun di wilayah mereka selama shift aktif” |
Jangan pilih model yang paling canggih. Pilihan yang lebih baik adalah yang dapat diterapkan secara konsisten oleh tim Anda. Di sebagian besar kodebasis produk, itu berarti RBAC untuk batasan akses yang luas dan atribut yang spesifik untuk kecuali seperti kepemilikan, penyewa, atau status perangkat.
Anatomi Aliran OAuth 2.0
Sebagian besar penjelasan OAuth tetap abstrak terlalu lama. Dalam aplikasi nyata, urutan yang penting, terutama untuk klien publik seperti Capacitor dan aplikasi Electron yang tidak dapat menjaga rahasia klien dengan aman.
Apa yang terjadi ketika pengguna menekan tombol login
Pengguna membuka aplikasi Capacitor Anda dan menekan tombol "Masuk dengan GitHub". Aplikasi Anda membuat verifikasi PKCE code dan tantangan yang dihasilkan code, kemudian mengirim pengguna ke server otorisasi dalam browser sistem atau tab browser yang aman. Aplikasi Anda juga termasuk status untuk memastikan responsnya milik permintaan yang diluncurkan.

Pada server otorisasi, pengguna masuk jika diperlukan dan menyetujui akses yang diminta. Server kemudian mengarahkan kembali dengan kode otorisasi code, bukan dengan kredential yang berumur panjang yang dapat digunakan secara langsung. Aplikasi Anda menerima kode otorisasi code melalui URI redirect yang dikonfigurasi.
Setelah itu, aplikasi itu menukar code untuk token. PKCE sangat penting dalam proses ini. Aplikasi mengirimkan verifikasi asli code bersama dengan otorisasi code. Server membandingkannya dengan challenge sebelumnya code. Jika mereka cocok, proses menukar token berhasil. Jika seseorang menangkap code tetapi tidak memiliki verifikasi, proses gagal.
PKCE sangat penting untuk klien native dan hybrid karena aplikasi-aplikasi ini adalah klien publik. Anda harus asumsikan penyerang dapat memeriksa bundle, mengembalikan code jalur, atau mengganggu keadaan lokal. PKCE mempersempit salah satu risiko paling umum dalam aliran berdasarkan redirect.
Berikut adalah ringkasan singkat jika Anda ingin memperbarui visual sebelum menerapkan urutan dalam code:
Dimana aplikasi cross-platform biasanya gagal
Protokolnya sederhana. Namun implementasinya sering kali tidak.
Aplikasi Capacitor biasanya gagal di salah satu tempat berikut:
- Menggunakan tampilan web terintegrasi untuk masuk sebaliknya dari browser sistem. Hal ini dapat mengganggu batasan keamanan yang diharapkan dan menciptakan perilaku cookie yang tidak konsisten.
- Mengalami kehilangan status redirect ketika aplikasi kembali ke shell native dari browser.
- Menggunakan penyimpanan browser tanpa enkripsi karena proyek dimulai sebagai aplikasi web dan tim tidak pernah memeriksa penyimpanan untuk mobile.
Aplikasi Electron memiliki masalah yang berbeda. Tim kadang-kadang membiarkan proses renderer menghandle logika autentikasi yang terlalu banyak, mengungkapkan token melalui IPC tanpa batasan yang ketat, atau menganggap aplikasi desktop seperti lingkungan yang dipercaya. Tidaklah demikian. Aplikasi desktop yang dikemas masih memerlukan mindset klien yang berbahaya.
Perilaku refresh juga memerlukan desain yang sengaja. Token akses harus kadaluarsa, sesi harus pulih dengan bersih, dan logika refresh tidak boleh menciptakan kondisi balapan di antara permintaan koncurrent yang banyak. Ini Referensi aliran refresh token yang aman ini adalah referensi yang solid untuk membangun bagian tersebut tanpa berakhir di dalam loop ulang atau kekacauan sesi yang ketinggalan.
Kebiasaan implementasi satu hal membantu lebih dari yang lain. Simpanlah tangan ajaib OAuth di dalam modul autentikasi kecil dengan input dan output yang eksplisit. Jangan menyebarkan penanganan redirect, parsing token, dan logika refresh di antara komponen, hook, dan utilitas jaringan acak.
Ancaman Keamanan dan Praktik Terbaik yang Diperlukan
Bugs autentikasi jarang terlihat dramatis dalam code tinjauan. Mereka terlihat seperti kemudahan. Lingkup yang luas di sini, token yang disimpan di sana, periksa server yang hilang karena UI sudah menyembunyikan tombol. Kemudian aplikasi tersebut dikirim dan kepanjangan-kepanjangan tersebut menjadi permukaan serangan.
Kegagalan yang terus muncul
Ekosistem mobile memberikan tanda peringatan yang berguna. Menurut Statistik keamanan mobile DeepStrike, 95% aplikasi mobile yang dites gagal setidaknya satu kontrol OWASP MASVS terkait autentikasi dan otorisasi, dan 85% aplikasi seluler yang dianalisis mengandung kelemahan keamanan Anda tidak perlu menerima setiap kerangka dalam pemasaran keamanan untuk mengambil signal inti serius. Kesalahan otorisasi umum.

Polanya sudah familiar:
- Token yang terlepas dari penyimpanan tidak aman, log, laporan kegagalan, atau keadaan yang dapat diakses renderer.
- Skop yang terlalu luas karena meminta segalanya lebih mudah daripada mengembangkan persetujuan secara bertahap.
- Pengaturan sisi klien dimana aplikasi menyembunyikan aksi yang tidak diotorisasi tetapi API masih menerimanya.
- Serangan ulang dan serangan redirect ketika validasi state, PKCE, atau URI redirect tidak teliti.
- Otorisasi Aplikasi setelah tim menambahkan peran dan kecuali tanpa tinjauan yang dijadwalkan.
Jika backend Anda tidak memverifikasi otorisasi pada setiap aksi yang dilindungi, Anda tidak memiliki otorisasi aplikasi. Anda memiliki petunjuk UI.
Daftar Pemeriksaan yang Praktis yang Tahan Lama
Pakai prinsip privasi yang paling sedikit sebagai default, bukan sebagai pekerjaan pembersihan nanti. Dalam proyek nyata, itu berarti mengurangi apa yang dapat dilakukan oleh setiap token, mengurangi di mana setiap token berada, dan mengurangi berapa lama setiap kredit tetap berguna.
- Meminta ruang lingkup yang sempit: Minta hanya izin yang dibutuhkan untuk fitur yang digunakan oleh pengguna saat ini. Jika aplikasi dapat menunda persetujuan, lakukan itu.
- Melaksanakan pada server: Tangani klien sebagai tidak dipercaya. Tombol, jalur, dan layar tersembunyi bukanlah batasan keamanan.
- Menggunakan penyimpanan aman platform: Pada perangkat mobile, gunakan akses keystore atau kunci rahasia native melalui plugin daripada penyimpanan lokal biasa. Pada desktop, jaga bahan sensitif di luar jangkauan renderer yang mudah.
- Mengvalidasi keadaan dan pengalihan handling: Respons auth harus sesuai dengan permintaan aplikasi Anda yang diinisiasi.
- Jatuhkan agresif dan refresh dengan hati-hati: Token akses singkat membatasi kerusakan ketika mereka bocor. Logika refresh harus berputar dengan bersih dan gagal tertutup.
- Revoke ketika diperlukan: Penghentian sesi dan tanggapan insiden harus mencakup kemampuan untuk membatalkan token dan memaksa reautentikasi.
- Validasi input dan lindungi transportasi: HTTPS, pemberhentian sertifikat di mana sesuai, dan validasi input semua penting karena otorisasi dapat dilawan melalui kelemahan yang berdekatan.
Untuk tim yang mengirimkan aplikasi melalui toko, desain autentikasi juga bertemu dengan API exposure dan tinjauan komplian. Ringkasan standar keamanan API untuk komplian toko aplikasi cocok dengan daftar checklist autentikasi Anda.
Poin akhir yang mudah dilupakan. Hak keistimewaan terendah juga berlaku pada alat internal. Panel admin, konsol dukungan, dan aplikasi staging biasanya berakhir dengan kontrol yang longgar di perusahaan, meskipun mereka sering menampilkan aksi yang paling sensitif.
Polanya Implementasi untuk Capacitor dan Electron
Otorisasi aplikasi lintas platform menjadi lebih mudah ketika Anda berhenti berpikir aplikasi Anda hanya merupakan browser dengan pengemasan tambahan. Capacitor dan Electron sama-sama memerlukan pola yang menghormati penyimpanan native, batasan proses, dan pengelolaan redirect.

Capacitor pola yang berfungsi
Untuk Capacitor, gunakan plugin atau library autentikasi yang mendukung OAuth sistem-browser dengan PKCE dan callback deep-link atau app-link yang tepat. Library seperti capacitor-oauth2 dapat menghilangkan banyak lem code, tetapi hanya jika Anda masih menjaga penyimpanan token dan perilaku refresh eksplisit.
Struktur yang praktis seperti ini:
- Koordinator autentikasi: Mengawali login, mengikuti status, mengelola callback.
- Pelayanan token: Menyimpan token melalui penyimpanan native yang aman, bukan penyimpanan browser.
- Klien API: Menempelkan token akses, mengulangi sekali pada refresh, kemudian memaksa keluar pada kegagalan yang tidak dapat diperbaiki.
- Politik-aware backend: Mengenkripsi klaim token ke periksaan otorisasi server.
Anda juga ingin alat sesi yang sesuai dengan siklus aplikasi hybrid. Jika Anda mengevaluasi opsi untuk lapisan itu, Capacitor plugin untuk manajemen sesi yang aman adalah tempat yang baik untuk membandingkan pendekatan.
Bentuk refresh token yang minimal dalam pseudocode seperti ini:
async function authorizedFetch(request) {
let token = await tokenStore.getAccessToken()
let response = await api(request, token)
if (response.status !== 401) return response
const refreshed = await auth.refresh()
if (!refreshed) {
await auth.signOut()
throw new Error('Session expired')
}
token = await tokenStore.getAccessToken()
return api(request, token)
}
Bagian penting bukanlah sintaks. Tetapi menjaga refresh sentralisasi agar setiap layar tidak mengembangkan perilaku sesi sendiri.
Polanya yang perlu hati-hati pada Electron
Electron memerlukan batasan yang lebih ketat. Simpan token exchange dan penyimpanan yang aman di proses utama jika memungkinkan. Terbuka metode IPC yang sempit ke renderer daripada memberikan renderer token mentah dan berharap berperilaku.
Aplikasi desktop terasa lebih terkendali daripada aplikasi mobile. Tatalah perasaan itu sebagai risiko, bukan jaminan.
Hindari cara-cara ini:
- Tidak menyimpan token di penyimpanan lokal yang dapat diakses renderer Jika Anda bisa menghindarinya.
- Jangan biarkan setiap jendela berbagi konteks autentikasi yang luas. Tanpa memeriksa tujuan jendela dan umur hidup sesi.
- Jangan terlalu percaya skrip pra-load. Sebagai pengganti isolasi proses dan batasan eksplisit API.
Keterlihatan operasional juga penting. Menurut Ringkasan Splunk tentang kebutuhan keamanan aplikasi., autentikasi aplikasi harus diintegrasi dengan pemantauan aktivitas terus-menerus dan logging, dan data benchmark yang dikutip di sana mengatakan bahwa organisasi yang merekam dan memantau peristiwa autentikasi secara proaktif mendeteksi 95% upaya akses tidak berwenang dalam 15 menit.Dalam prakteknya, itu berarti mencatat aksi yang ditolak, gagal memperbarui token, perubahan peran, penghapusan persetujuan, dan pola akses sumber daya yang tidak biasa.
Jika proses rilis Anda termasuk pembaruan aplikasi hybrid, salah satu opsi dalam ekosistem ini adalah Capgoyang menyediakan pembaruan hidup yang ditandatangani untuk Capacitor dan aplikasi Electron. Namun, itu tidak mengimplementasikan otorisasi untuk Anda, tetapi itu mempengaruhi seberapa cepat Anda dapat mengirimkan perbaikan ketika logika otorisasi, pengalihan alih, atau code sesi memerlukan perbaikan darurat.
Jalan Menuju Otorisasi Aplikasi yang Aman
Otorisasi aplikasi yang baik bukanlah satu keputusan. Ini adalah rantai keputusan yang semua perlu menahan bersama. Anda melakukan autentikasi pengguna dengan benar, meminta akses yang dibutuhkan, mengalirkan token melalui aliran yang aman seperti OAuth 2.0 dengan PKCE, menyimpan rahasia di tempat yang tepat, dan menerapkan izin pada server setiap kali.
Bagian yang paling penting untuk Capacitor dan tim Electron adalah disiplin di tepi. Pendekatan singkat browser tidak bertahan setelah bersinggungan dengan penyimpanan native, tautan dalam, batasan proses desktop, atau persyaratan tinjauan aplikasi. Tim yang tetap keluar dari masalah biasanya tidak melakukan apa pun yang ekstrem. Mereka hanya konsisten tentang ruang lingkup, pengelolaan sesi, pengecekan sisi server, dan auditabilitas.
Jika setup otorisasi Anda saat ini terasa berantakan, itu normal. Mulai dengan memperketat satu batasan pada satu waktu. Perbaiki aliran. Perbaiki penyimpanan. Pindahkan aturan akses keluar dari antarmuka pengguna. Tambahkan log yang memberitahu Anda ketika seseorang meminta sesuatu yang tidak seharusnya mereka miliki.
Itu cara aplikasi autentikasi menjadi lebih terkelola. Tidak lebih sederhana secara teori. Lebih aman dalam code.
Capgo membantu tim Anda mengirimkan perbaikan ke Capacitor dan aplikasi Electron tanpa harus menunggu ulasan toko, yang sangat penting ketika Anda perlu memperbaiki aliran autentikasi, pengelolaan token, atau bug sesi dengan cepat. Jika tim Anda ingin memiliki kontrol yang lebih ketat atas rilis lintas platform, peluncuran yang sasaran, dan dukungan rollback, Capgo layak dievaluasi bersama dengan stack autentikasi aplikasi Anda.