Authorization & RBAC di REST API Python: Mengontrol Akses Setelah Authentication
Jika pada artikel sebelumnya kita membahas Authentication & JWT di REST API Python, maka tahap berikutnya adalah memastikan bahwa tidak semua user memiliki hak yang sama. Inilah inti dari Authorization dan Role-Based Access Control (RBAC).
Artikel ini adalah lanjutan dari seri backend Python di Teknologi Nalar, yang dimulai dari:
Authentication vs Authorization
Banyak developer pemula mencampuradukkan authentication dan authorization. Padahal keduanya memiliki peran berbeda:
| Konsep | Fungsi |
|---|---|
| Authentication | Siapa Anda? |
| Authorization | Apa yang boleh Anda lakukan? |
JWT hanya menjawab siapa user. RBAC menjawab apa hak akses user tersebut.
Apa Itu RBAC (Role-Based Access Control)?
RBAC adalah pendekatan keamanan yang mengelompokkan hak akses berdasarkan role. Pendekatan ini direkomendasikan dalam standar keamanan modern seperti OWASP.
Contoh role umum:
- admin → akses penuh
- editor → kelola konten
- user → akses terbatas
Menyimpan Role di JWT
JWT memungkinkan kita menyimpan klaim tambahan seperti role.
Menggunakan
Flask-JWT-Extended,
kita dapat menambahkan role saat login.
access_token = create_access_token(
identity=user.id,
additional_claims={"role": user.role}
)
Struktur JWT ini sesuai dengan standar RFC 7519.
Membatasi Akses Endpoint Berdasarkan Role
Authorization yang baik berarti backend menolak akses sebelum logic bisnis dijalankan.
from flask_jwt_extended import get_jwt
@app.route('/admin/data')
@jwt_required()
def admin_data():
claims = get_jwt()
if claims["role"] != "admin":
return {"msg": "Forbidden"}, 403
return {"data": "Admin Only"}
Penggunaan status code 403 Forbidden sesuai dengan standar
HTTP Status Code.
Membuat Decorator RBAC agar Kode Bersih
Untuk aplikasi skala menengah ke atas, RBAC sebaiknya dibuat reusable.
def role_required(role):
def wrapper(fn):
@wraps(fn)
def decorator(*args, **kwargs):
claims = get_jwt()
if claims.get("role") != role:
return {"msg": "Access denied"}, 403
return fn(*args, **kwargs)
return decorator
return wrapper
Pendekatan ini menjaga arsitektur backend tetap bersih dan terukur.
Kesalahan Umum dalam Authorization
- Mengandalkan frontend untuk kontrol akses
- Tidak menggunakan HTTP status code yang benar
- Role ditentukan di client
Semua validasi wajib terjadi di backend.
RBAC sebagai Pondasi Sistem Profesional
Dengan menggabungkan:
- Authentication & JWT
- Authorization & RBAC
- REST API Design
Anda tidak lagi sekadar belajar Python, tetapi membangun sistem backend siap produksi.
🚀 Lanjutan Berikutnya
Artikel selanjutnya akan membahas: Rate Limiting, Permission, dan API Security Lanjutan untuk REST API Python.
Tidak ada komentar:
Posting Komentar