Konsep Autentikasi dan Otorisasi dalam Pemrograman
1. Latar Belakang
Perkembangan
teknologi informasi yang pesat telah mendorong penggunaan sistem
digital dalam berbagai bidang, seperti pendidikan, bisnis, dan layanan
publik. Hampir seluruh aplikasi modern melibatkan interaksi pengguna
serta pengelolaan data yang bersifat sensitif. Kondisi ini menuntut
adanya sistem yang mampu mengontrol akses pengguna agar data dan fungsi
aplikasi tidak dapat digunakan secara sembarangan oleh pihak yang tidak
berwenang.
Dalam
pemrograman, konsep autentikasi dan otorisasi berperan penting dalam
menjaga keamanan sistem. Autentikasi digunakan untuk memverifikasi
identitas pengguna, sedangkan otorisasi berfungsi untuk menentukan hak
akses pengguna terhadap fitur atau data tertentu. Pemahaman terhadap
kedua konsep ini sangat penting bagi pengembang perangkat lunak agar
dapat membangun aplikasi yang aman, terstruktur, dan dapat dipercaya
oleh pengguna.
2. Alat dan Bahan
a. Perangkat Lunak
- Web Browser (Chrome/Edge)
- Web Server (XAMPP)
- Text Editor (VS Code)
b. Perangkat Keras
- Laptop / Komputer.
3. Pembahasan
3.1 Apa Itu Autentikasi pada Pemrograman?
Autentikasi adalah proses memastikan bahwa seseorang benar-benar adalah siapa yang ia klaim saat ingin mengakses sebuah sistem, aplikasi, atau layanan digital.
Sederhananya:
Autentikasi = proses “membuktikan identitas”
Analogi kehidupan sehari - hari:
Bayangkan kamu masuk ke sekolah. Kamu bilang ke satpam: “Saya murid sini”. Satpam tidak langsung percaya dan kamu diminta menunjukkan kartu pelajar. Proses satpam mengecek kartu pelajar itulah yang disebut autentikasi.
Kalau kartu pelajarnya valid -> kamu boleh masuk
Kalau palsu -> kamu ditolak
3.2 Metode Autentikasi
Metode autentikasi secara umum dibagi menjadi 3 kategori utama, berdasarkan faktor yang digunakan untuk membuktikan identitas seseorang. Dalam praktiknya, kategori ini diimplementasikan dalam berbagai bentuk seperti password, OTP, token, OAuth, hingga biometrik.
1. Something You Know (Sesuatu yang Kamu Tahu)
Metode ini menggunakan informasi rahasia yang hanya diketahui oleh pengguna.
Contoh:
- Username & password
- PIN ATM
- Jawaban pertanyaan keamanan
- Passphrase
Cara kerja:
1. User memasukkan informasi (misalnya email dan password).
2. Server mencocokkan password dengan data yang tersimpan (biasanya dalam bentuk hash).
3. Jika cocok → user terautentikasi.
Biasanya dipakai di:
- Web app
- Mobile app
- Admin panel
Kelebihan:
- Mudah diterapkan
- Biaya murah
- Paling umum digunakan
Kekurangan:
- Bisa ditebak
- Bisa bocor
- Rentan brute force
2. Something You Have (Sesuatu yang Kamu Miliki)
Metode ini menggunakan benda fisik atau perangkat yang dimiliki pengguna.
Contoh:
- Kartu ATM
- Token OTP (hardware token)
- HP untuk menerima kode OTP
- Smart card
- USB security key seperti YubiKey
OTP adalah kode sekali pakai dengan masa berlaku sangat singkat.
Cara kerja OTP:
1. User memasukkan email atau nomor telepon.
2. Server mengirim kode OTP melalui SMS/email/WhatsApp.
3. User memasukkan kode OTP.
4. Server memvalidasi kode.
5. Jika valid → user terautentikasi.
Biasanya dipakai di:
- Aplikasi perbankan
- E-wallet
- Verifikasi login tambahan (2FA)
Kelebihan:
- Lebih aman dari sekadar password
- Sulit ditebak
Kekurangan:
- Bisa hilang
- Bisa dicuri
- Bergantung pada perangkat tambahan
3. Something You Are (Sesuatu yang Kamu Adalah)
Metode ini menggunakan karakteristik biologis atau biometrik pengguna.
Contoh:
- Sidik jari
- Face recognition
- Retina scan
- Voice recognition
Contoh implementasi pada smartphone:
- Face ID
- Touch ID
Cara kerja:
1. User melakukan pemindaian biometrik.
2. Sistem mencocokkan dengan data biometrik yang tersimpan.
3. Jika cocok → user terautentikasi.
Biasanya dipakai di:
- Smartphone
- Aplikasi perbankan
- Sistem keamanan tinggi
Kelebihan:
- Sulit dipalsukan
- Praktis (tidak perlu mengingat password)
Kekurangan:
- Privasi sangat sensitif
- Jika bocor, tidak bisa diganti seperti password
4. Kombinasi Metode: Multi-Factor Authentication (MFA)
Dalam sistem modern, keamanan biasanya ditingkatkan dengan menggabungkan beberapa faktor autentikasi, disebut Multi-Factor Authentication (MFA).
Contoh kombinasi:
Password (Something You Know) + OTP ke HP (Something You Have)
Itu disebut Two-Factor Authentication (2FA).
Selain itu, pada aplikasi modern sering digunakan metode tambahan seperti:
1. OAuth / Social Login
Login menggunakan akun pihak ketiga seperti:
User diarahkan ke penyedia layanan → setelah berhasil login → aplikasi menerima token autentikasi.
2. Token / API Key
Digunakan untuk autentikasi antar sistem (bukan manusia), misalnya pada REST API dan komunikasi backend-to-backend.
3. Certificate / Key-Based Authentication
Menggunakan pasangan public key dan private key atau sertifikat digital. Umum pada server, cloud, dan sistem enterprise.
3.3 Apa itu Otorisasi pada Pemrograman?
Otorisasi adalah proses menentukan apa saja yang boleh dan tidak boleh dilakukan oleh seseorang setelah ia berhasil diautentikasi di dalam sebuah sistem, aplikasi, atau layanan digital.
Sederhananya:
Otorisasi = proses “memberi izin akses”
Analogi kehidupan sehari-hari:
Bayangkan kamu sudah berhasil masuk ke sekolah karena kartu pelajarmu valid (itu autentikasi).
Setelah masuk:
- Murid boleh masuk kelas
- Murid tidak boleh masuk ruang guru
- Murid tidak boleh masuk ruang kepala sekolah tanpa izin
Proses menentukan kamu boleh ke mana dan kamu boleh ngapain itulah yang disebut otorisasi.
3.4 Perbedaan Utama Autentiksai vs Otorisasi
Perbedaan utama antara autentikasi dan otorisasi terletak pada tujuan dan waktu prosesnya. Autentikasi adalah
proses untuk memastikan siapa identitas pengguna yang ingin mengakses
sebuah sistem, misalnya dengan memeriksa kecocokan email dan password
saat login. Proses ini terjadi di awal, sebelum pengguna dapat masuk ke
dalam sistem. Jika autentikasi gagal, pengguna tidak akan bisa
melanjutkan ke tahap berikutnya karena identitasnya tidak dapat
dibuktikan.
Sementara itu, otorisasi adalah
proses untuk menentukan hak akses pengguna setelah ia berhasil
diautentikasi. Otorisasi mengatur apa saja yang boleh dan tidak boleh
dilakukan oleh pengguna di dalam sistem, seperti apakah ia boleh melihat
data, mengubah data, atau menghapus data tertentu. Jadi, walaupun dua
pengguna sama-sama berhasil login, mereka bisa memiliki hak akses yang
berbeda tergantung peran atau levelnya. Singkatnya:
Autentikasi -> “siapa kamu?”
Otorisasi -> “kamu boleh melakukan apa?”
3.5 Alur Sistem Autentikasi dan Otorisasi
Berikut adalah urusan bagaimana sistem autentikasi dan otorisasi bekerja:
1. User membuka aplikasi atau website
2. User memasukkan username/email dan password
3. Data login dikirim ke server
4. Server melakukan proses autentikasi dengan mencocokkan data user dan password (hash) di database
5. Jika data tidak valid, login gagal dan akses dihentikan
6. Jika data valid, user berhasil login
7. Sistem membuat session atau token sebagai tanda user sudah terautentikasi
8. Sistem melakukan proses otorisasi dengan mengecek role atau hak akses user
9. Jika user tidak memiliki izin, akses ditolak
10. Jika user memiliki izin, akses diizinkan
11. User dapat menggunakan fitur atau mengakses data sesuai haknya
12. Proses selesai
3.6 Tujuan Utama Autentikasi dan Otorisasi pada Sistem
Dalam sistem informasi modern, autentikasi dan otorisasi merupakan dua komponen penting yang tidak dapat dipisahkan. Penerapan autentikasi dan otorisasi bertujuan untuk:
1. Menjamin Keamanan Akses Sistem
Autentikasi dan otorisasi bertujuan untuk melindungi sistem dari akses yang tidak sah. Autentikasi memastikan bahwa hanya pengguna yang memiliki identitas valid yang dapat masuk ke dalam sistem, sedangkan otorisasi membatasi akses pengguna agar tidak dapat membuka atau menggunakan fitur di luar kewenangannya. Dengan demikian, sistem menjadi lebih aman dari penyusupan dan penyalahgunaan.
2. Memastikan Identitas Pengguna
Tujuan utama autentikasi adalah untuk memastikan bahwa pengguna benar-benar merupakan orang yang berhak menggunakan akun tersebut. Proses ini mencegah pihak lain mengaku sebagai pengguna sah, sehingga risiko pencurian identitas dan penggunaan akun tanpa izin dapat diminimalkan.
3. Mengatur Hak Akses Pengguna
Otorisasi berfungsi untuk menentukan apa saja yang boleh dan tidak boleh dilakukan oleh pengguna setelah berhasil login. Setiap pengguna dapat memiliki peran dan hak akses yang berbeda, sehingga sistem dapat berjalan dengan lebih teratur dan sesuai dengan fungsinya masing-masing.
4. Melindungi Kerahasiaan dan Integritas Data
Dengan adanya autentikasi dan otorisasi, data penting dalam sistem tidak dapat diakses atau diubah sembarangan. Hanya pengguna yang memiliki izin tertentu yang dapat melihat, menambah, mengubah, atau menghapus data, sehingga kerahasiaan dan keakuratan data tetap terjaga.
5. Mencegah Penyalahgunaan Sistem
Autentikasi dan otorisasi membantu mencegah tindakan yang merugikan sistem, seperti penghapusan data penting atau perubahan informasi secara tidak sah. Sistem dapat menolak setiap tindakan yang tidak sesuai dengan hak akses pengguna, meskipun pengguna tersebut sudah berhasil login.
3.7 Bagaimana cara autentikasi dan otorisasi mengingat sesi login?
Setelah pengguna berhasil melakukan proses autentikasi (login), sistem perlu “mengingat” bahwa pengguna tersebut sudah terverifikasi agar tidak perlu login ulang setiap kali berpindah halaman. Proses mengingat status login ini disebut manajemen sesi (session management).
Tanpa mekanisme penyimpanan sesi, sistem tidak akan tahu apakah pengguna sudah login atau belum, sehingga pengguna harus memasukkan username dan password setiap kali membuka halaman baru.
Secara umum, ada beberapa cara sistem mengingat sesi login:
1. Session (Server-Side Session)
Session adalah metode yang menyimpan data login pengguna di sisi server.
Cara kerja:
1. User berhasil login.
2. Server membuat session unik (biasanya berupa session ID).
3. Session ID dikirim ke browser dan disimpan dalam cookie.
4. Setiap kali user membuka halaman lain, browser otomatis mengirim session ID ke server.
5. Server mencocokkan session ID tersebut dengan data yang tersimpan.
6. Jika valid, user dianggap masih login.
Kelebihan:
- Lebih aman karena data utama disimpan di server.
- Cocok untuk aplikasi berbasis web tradisional.
Contoh penggunaan:
1. PHP Native (menggunakan $_SESSION)
2. Laravel session
3. Express.js session
2. Cookie
Cookie adalah file kecil yang disimpan di browser pengguna untuk menyimpan informasi tertentu.
Cara kerja:
1. Setelah login berhasil, server mengirim cookie ke browser.
2. Cookie berisi data tertentu (misalnya token atau session ID).
3. Browser menyimpan cookie tersebut.
4. Setiap request berikutnya, cookie otomatis dikirim kembali ke server.
Cookie sering digunakan bersamaan dengan session. Namun, jika menyimpan data sensitif langsung di cookie tanpa enkripsi, hal ini berisiko terhadap keamanan.
3. Token-Based Authentication (JWT)
Pada sistem modern seperti REST API atau aplikasi mobile, biasanya digunakan metode token, misalnya JSON Web Token (JWT).
Cara kerja:
1. User login dengan email dan password.
2. Server memverifikasi data.
3. Jika valid, server membuat token (berisi informasi user dan tanda tangan digital).
4. Token dikirim ke client.
5. Client menyimpan token (di localStorage atau cookie).
6. Setiap request berikutnya, token dikirim melalui header Authorization.
7. Server memverifikasi token sebelum memberikan akses.
Kelebihan:
- Cocok untuk aplikasi mobile dan SPA (Single Page Application).
- Tidak perlu menyimpan session di server (stateless).
4. Role dan Hak Akses dalam Sesi
Selain menyimpan status login, sistem juga biasanya menyimpan:
- ID user
- Username
- Role (admin, user, moderator, dll)
Contoh alur:
1. User login berhasil.
2. Sistem menyimpan:
- Status login
- ID user
- Role user
3. Saat user membuka halaman tertentu:
- Sistem mengecek apakah user sudah login.
- Sistem mengecek apakah role user sesuai.
4. Jika tidak sesuai, akses ditolak.
Perbedaan Penyimpanan Sesi pada Sistem Tradisional dan Modern
1. Sistem Tradisional (Server-Side)
- Menggunakan session di server.
- Setiap user memiliki session ID.
- Cocok untuk aplikasi web berbasis PHP atau server-rendered.
2. Sistem Modern (Stateless API)
- Menggunakan token (misalnya JWT).
- Server tidak menyimpan session.
- Cocok untuk microservices dan mobile app.
3.8 Contoh Implementasi Autentikasi dan Otorisasi Menggunakan PHP Native
A. Autentikasi
Penjelasan kode:
1. session_start() digunakan untuk memulai session agar data login user bisa disimpan dan digunakan di halaman lain.
2. include 'koneksi.php' berfungsi untuk menghubungkan aplikasi dengan database MySQL.
3. Variabel $email dan $password mengambil data yang dikirim user dari form login menggunakan metode POST.
4. Query SELECT * FROM users WHERE email='$email' digunakan untuk mencari data user di database berdasarkan email yang dimasukkan.
5. mysqli_fetch_assoc() mengambil hasil query dan menyimpannya ke dalam variabel $user dalam bentuk array.
6. Kondisi if ($user && password_verify(...)) mengecek dua hal, yaitu apakah data user ditemukan dan apakah password yang dimasukkan sesuai dengan password yang sudah di-hash di database.
7. Jika kondisi terpenuhi, berarti autentikasi berhasil dan sistem menyimpan status login, ID user, serta role user ke dalam session.
8. Setelah berhasil login, user diarahkan ke halaman dashboard.php.
9. Jika email tidak ditemukan atau password salah, sistem menampilkan pesan bahwa login gagal.
B. Otorisasi
Penjelasan kode:
1. session_start() digunakan untuk memulai session agar sistem dapat membaca data login dan role user.
2. Kondisi if (!isset($_SESSION['login'])) berfungsi untuk memastikan bahwa user sudah login. Jika belum login, user akan diarahkan ke halaman login.php dan proses dihentikan.
3. Setelah dipastikan login, sistem melakukan otorisasi dengan mengecek nilai $_SESSION['role'].
4. Kondisi if ($_SESSION['role'] != 'admin') digunakan untuk memastikan bahwa hanya user dengan role admin yang boleh mengakses halaman ini.
5. Jika role user bukan admin, sistem menampilkan pesan “Akses ditolak. Anda bukan admin.” dan menghentikan proses.
6. Jika user sudah login dan memiliki role admin, maka halaman admin dapat ditampilkan.
7. Teks “Halaman Admin” dan keterangan bahwa halaman ini hanya untuk admin ditampilkan sebagai isi halaman.
3.8 Kesimpulan
Autentikasi dan otorisasi merupakan komponen penting dalam sistem dan aplikasi digital yang berfungsi untuk menjaga keamanan serta mengatur akses pengguna. Autentikasi memastikan identitas pengguna yang mengakses sistem, sedangkan otorisasi menentukan hak akses pengguna terhadap fitur dan data tertentu. Berbagai metode autentikasi, seperti username dan password, OTP, token atau API key, OAuth, hingga multi-factor authentication, dapat diterapkan sesuai dengan kebutuhan dan tingkat keamanan sistem.
Penerapan autentikasi dan otorisasi yang tepat memungkinkan sistem melindungi data sensitif, mencegah akses tidak sah, serta menghindari penyalahgunaan fungsi aplikasi. Dengan membedakan hak akses setiap pengguna berdasarkan peran atau levelnya, sistem menjadi lebih terstruktur dan aman. Oleh karena itu, pemahaman dan implementasi autentikasi serta otorisasi sangat diperlukan bagi pengembang perangkat lunak agar dapat membangun aplikasi yang andal, aman, dan dapat dipercaya di era digital.
4. Daftar Pustaka
Gudang SSL. (n.d.). Autentikasi adalah: Pengertian, jenis, dan contohnya. Gudang SSL. https://gudangssl.id/blog/autentikasi-adalah/
IBM. (n.d.). Authentication vs. authorization. IBM Indonesia. https://www.ibm.com/id-id/think/topics/authentication-vs-authorization
Dicoding Indonesia. (n.d.). Kesalahan konsep umum tentang authentication vs authorization. Dicoding Blog. https://www.dicoding.com/blog/kesalahan-konsep-umum-tentang-authentication-vs-authorization/
Puskomedia. (n.d.). Menerapkan otentifikasi dan otorisasi dalam pemrograman web. Puskomedia. https://puskomedia.id/blog/menerapkan-otentifikasi-dan-otorisasi-dalam-pemrograman-web/
0 Komentar