Panduan

Apa Itu Autentikasi? Login, Sesi, dan OAuth Dijelaskan

Autentikasi adalah cara aplikasi memastikan siapa penggunanya, biasanya dengan memeriksa sesuatu yang diketahui pengguna (password), sesuatu yang dimiliki pengguna (kode yang dikirim ke ponsel atau email mereka), atau identitas dari layanan tepercaya lain (seperti "Sign in with Google"). Setelah pengguna terautentikasi, aplikasi mengingatnya dengan sesi atau token supaya ia tidak perlu login di setiap halaman. Menentukan apa yang boleh dilakukan pengguna yang sudah dikenal itu adalah langkah terpisah yang disebut otorisasi.

Mengapa ini penting saat membangun dengan AI

Menambahkan login adalah salah satu permintaan paling umum kepada AI builder, dan salah satu yang paling mudah keliru secara halus. Halaman login sederhana untuk dibuat. Bagian yang sulit adalah semua yang ada di sekitarnya:

  • Apakah password disimpan dengan aman?
  • Apakah setiap halaman privat dan setiap endpoint API benar-benar memeriksa siapa yang meminta?
  • Bisakah customer yang sudah login melihat data customer lain dengan mengubah angka di URL?
  • Apa yang terjadi ketika seseorang lupa password?

Aplikasi bisa tampak sangat aman padahal gagal di semua poin itu. Memahami bagian-bagian yang bergerak membantumu mengajukan pertanyaan yang tepat dan menguji hal yang tepat.

Analogi sehari-hari

Bayangkan saat check-in di hotel.

Di meja resepsionis kamu menunjukkan KTP. Itulah autentikasi: membuktikan siapa kamu. Resepsionis lalu memberimu kartu akses. Kartu itu adalah sesi-mu: selama menginap kamu tidak perlu menunjukkan KTP lagi; kamu cukup menempelkan kartu.

Kartu itu membuka kamarmu, gym, dan lift ke lantai kamu, tetapi tidak membuka kamar tamu lain atau ruang staf. Itulah otorisasi: apa yang boleh diakses identitasmu. Jika kartu hilang, hotel bisa menonaktifkannya di meja resepsionis (mencabut sesi). Saat check-out, kartu berhenti berfungsi (logout, atau kedaluwarsa).

"Sign in with Google" seperti hotel yang menerima surat dari mitra tepercaya yang menyatakan "ini orangnya", alih-alih memeriksa KTP kamu sendiri.

Metode login utama

MetodeCara kerjaKelebihanKekurangan
Email + passwordPengguna memilih password; aplikasi menyimpan hash-nyaSudah familiar, tidak bergantung pada layanan luarHash harus disimpan dengan aman dan reset harus ditangani
Magic link / kode sekali pakaiAplikasi mengirim tautan atau kode lewat email untuk loginTidak ada password yang bisa bocor atau terlupakanBergantung pada pengiriman email; login lebih lambat
Login sosial (OAuth / OpenID Connect)Pengguna login dengan Google, Apple, GitHub, dll.Cepat bagi pengguna; kamu tidak menyimpan passwordPerlu setup di setiap penyedia; pengguna yang tidak punya akun tersebut
Penyedia autentikasi hostedLayanan seperti Clerk, Auth0, atau Supabase Auth menangani sign-up, login, dan resetPekerjaan keamanan lebih sedikit untukmuBiaya bulanan saat skala besar; dependensi tambahan
Multi-factor (MFA / 2FA)Pemeriksaan kedua setelah yang pertama, misalnya kode dari aplikasi authenticatorJauh lebih sulit untuk dibobolSedikit lebih merepotkan

Cara password seharusnya disimpan

Aplikasi yang aman tidak pernah menyimpan password aslimu. Sebagai gantinya, ia menyimpan hash: hasil dari fungsi satu arah yang mengubah password menjadi string tetap. Saat kamu login, aplikasi meng-hash apa yang kamu ketik lalu membandingkan hasilnya dengan hash yang tersimpan.

Dua detail membuat cara ini aman:

  • Salt: nilai acak yang ditambahkan ke setiap password sebelum di-hash, sehingga dua orang dengan password yang sama mendapat hash yang berbeda, dan tabel pencarian yang sudah dihitung sebelumnya menjadi tidak berguna.
  • Algoritma lambat yang dibuat khusus untuk password, seperti Argon2, bcrypt, atau scrypt. Hash tujuan umum seperti MD5 atau SHA-256 terlalu cepat jika berdiri sendiri; penyerang bisa mencoba miliaran tebakan.

Hashing tidak sama dengan enkripsi. Data terenkripsi bisa didekripsi dengan kunci; hash password dirancang agar tidak bisa dibalik sama sekali.

Sesi vs token

Setelah login, aplikasi perlu mengenalimu pada setiap permintaan. Ada dua pendekatan umum.

Sesi (cookie)Token (mis. JWT)
Yang disimpan browserID sesi acak dalam cookieToken bertanda tangan yang berisi info pengguna dan waktu kedaluwarsa
Tempat status login disimpanDi server, dalam database atau penyimpananDi dalam token itu sendiri
Mengeluarkan seseorang dari semua perangkatMudah: hapus sesinya di serverLebih sulit: token tetap berlaku sampai kedaluwarsa kecuali kamu menyimpan daftar blokir
Penggunaan umumAplikasi web tradisionalAPI, aplikasi mobile, layanan yang saling berkomunikasi

Untuk cookie, tiga pengaturan penting: HttpOnly (JavaScript di halaman tidak bisa membaca cookie), Secure (hanya dikirim lewat HTTPS), dan SameSite (membatasi pengiriman pada permintaan dari situs lain). Menyimpan token di localStorage browser itu umum, tetapi membuatnya terbuka bagi script apa pun yang berjalan di halaman.

OAuth dan "Sign in with Google"

OAuth 2.0 adalah standar untuk otorisasi yang didelegasikan: standar ini memungkinkan aplikasi mendapatkan akses terbatas ke akunmu di layanan lain, misalnya membaca Google Calendar-mu, tanpa pernah melihat password Google kamu. Kamu diarahkan ke Google, menyetujui izin tertentu (disebut scope), dan Google memberi aplikasi token hanya untuk izin tersebut.

OAuth sendiri dirancang untuk memberi akses, bukan untuk menyatakan siapa kamu. OpenID Connect (OIDC) adalah lapisan di atas OAuth 2.0 yang menambahkan identitas, dan inilah yang dipakai "Sign in with Google" atau "Sign in with Apple". Untuk menyiapkannya, kamu mendaftarkan aplikasi ke penyedia dan mendapatkan client ID serta client secret; secret tetap berada di server kamu.

Contoh nyata: login untuk portal klien

Anggaplah kamu membangun portal tempat klien sebuah agensi desain melihat project dan invoice mereka.

  • Autentikasi: klien login dengan email dan magic link, sehingga tidak ada password yang perlu dikelola. Staf agensi login dengan akun Google Workspace.
  • Peran: setiap pengguna punya peran, yaitu client atau staff.
  • Aturan otorisasi:
AksiKlienStaf
Melihat project perusahaannya sendiriYaYa
Melihat project perusahaan lainTidakYa
Mengunggah file ke projectHanya project sendiriYa
Menandai invoice sebagai lunasTidakYa
  • Tempat penegakannya: di server, untuk setiap permintaan. Server mencari pengguna yang sedang login, lalu hanya mengembalikan project di mana project.company_id cocok dengan perusahaan pengguna tersebut. Menyembunyikan tombol "Tandai lunas" saja tidak cukup; endpoint-nya sendiri harus menolak.

Istilah penting

IstilahArtinya
Autentikasi (AuthN)Memastikan siapa seseorang.
Otorisasi (AuthZ)Memutuskan apa yang boleh dia lakukan.
SesiAplikasi yang mengingat bahwa kamu sudah login, di antara beberapa permintaan.
CookieSepotong data kecil yang dikirim kembali browser ke situs pada setiap permintaan.
JWTJSON Web Token: token ringkas yang bertanda tangan dan membawa klaim seperti ID pengguna dan waktu kedaluwarsa.
Peran / izinLabel seperti admin atau member yang menentukan akses.
MFA / 2FAMewajibkan bukti kedua, seperti kode dari aplikasi authenticator.
SSOSingle sign-on: satu login (sering akun perusahaan) untuk banyak aplikasi.
401 vs 403"Kamu siapa?" (belum terautentikasi) vs "Kamu tidak boleh melakukan itu" (tidak terotorisasi).

Kesalahan dan kesalahpahaman umum

  • Memeriksa izin hanya di halaman. Jika browser menyembunyikan tombol tetapi API tidak memeriksa, siapa pun bisa memanggil API secara langsung.
  • Mempercayai ID dari URL. /invoices/1042 harus memeriksa bahwa invoice 1042 milik pengguna yang sedang login.
  • Membuat kriptografi sendiri. Gunakan library atau penyedia yang sudah dikenal; jangan biarkan AI menciptakan skema hashing sendiri.
  • Reset password yang lemah. Tautan reset sebaiknya sekali pakai, cepat kedaluwarsa, dan tidak mengungkapkan apakah sebuah email punya akun.
  • Mencampuradukkan login aplikasimu dengan login builder-mu. Pengguna aplikasimu terpisah dari akunmu di alat yang kamu pakai untuk membangun.
  • Tidak ada pembatasan laju pada login. Tanpa itu, penyerang bisa terus mencoba password.

Yang bisa kamu minta dari AI builder

  • "Tambahkan sign-up dan login menggunakan [library atau penyedia yang sudah dikenal]. Jangan tulis hashing password sendiri."
  • "Simpan password dalam bentuk hash dengan bcrypt atau Argon2."
  • "Gunakan cookie HttpOnly dan Secure untuk sesi."
  • "Tambahkan peran: admin dan member. Daftarkan setiap endpoint dan peran mana yang boleh memanggilnya."
  • "Pastikan di server bahwa pengguna hanya bisa membaca dan mengubah data miliknya sendiri. Lalu tunjukkan bagaimana kamu memeriksanya."
  • "Tambahkan reset password dengan tautan sekali pakai yang kedaluwarsa dalam satu jam."
  • "Batasi laju percobaan login."

Lalu uji sendiri: buat dua akun dan coba akses data salah satu akun saat login sebagai akun lainnya. Panduan kami tentang menambahkan login dan checklist keamanan membahas lebih jauh.

Autentikasi di Mythex

Mythex tidak menyediakan produk autentikasi bawaan untuk pengguna aplikasimu; kamu memilih pendekatannya, yaitu email dan password yang disimpan di database project, atau SDK dari penyedia hosted, lalu meminta agent untuk menambahkannya. Key penyedia disimpan sebagai secret project, bukan di chat. Ini terpisah dari cara kamu login ke Mythex itu sendiri. Resep dokumentasi tentang menambahkan login ke aplikasi memiliki starter prompt yang bisa kamu sesuaikan, dan apa itu API menjelaskan di mana pemeriksaan sisi server tersebut berada.

Pertanyaan

Apa perbedaan antara autentikasi dan otorisasi?

Autentikasi memeriksa siapa kamu, misalnya dengan memverifikasi password. Otorisasi memutuskan apa yang boleh kamu lakukan setelah identitasmu diketahui, misalnya apakah kamu boleh melihat halaman admin atau mengubah booking orang lain. Aplikasi membutuhkan keduanya.

Apa itu OAuth?

OAuth 2.0 adalah standar yang memungkinkan aplikasi mendapatkan akses terbatas ke akunmu di layanan lain tanpa melihat password kamu. 'Sign in with Google' menggunakan OpenID Connect, sebuah lapisan identitas yang dibangun di atas OAuth 2.0, sehingga aplikasi mengetahui siapa kamu dari Google.

Apakah aplikasi saya boleh menyimpan password?

Jangan pernah dalam bentuk yang bisa dibaca. Jika kamu memakai login email dan password, password harus disimpan sebagai hash dengan salt, dibuat dengan algoritma lambat yang dirancang khusus untuk password, seperti Argon2 atau bcrypt. Banyak aplikasi menghindari masalah ini dengan memakai penyedia autentikasi hosted, login sosial, atau magic link lewat email.

Sesi atau token, mana yang sebaiknya dipakai aplikasi saya?

Keduanya bisa dipakai. Sesi menyimpan status login di server dan memberi browser sebuah ID acak dalam cookie, yang mudah dicabut. Token seperti JWT membawa informasi bertanda tangan di dalamnya sendiri, cocok untuk API dan klien mobile, tetapi lebih sulit dibatalkan sebelum kedaluwarsa. Untuk aplikasi web yang umum, sesi berbasis cookie adalah pilihan default yang 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 简体中文 繁體中文(香港) 繁體中文(台灣)