HeaderRight Teknologi Nalar

Kamis, 01 Januari 2026

Dari Login Biasa ke Sistem Aman: Authentication & JWT di REST API Python

Dari Login Biasa ke Sistem Aman: Authentication & JWT di REST API Python
Authentication dan JWT di REST API Python
Dari Login Biasa ke Sistem Backend yang Aman & Profesional

Dari Login Biasa ke Sistem Aman: Membangun Authentication & JWT di REST API Python

Kategori: Backend Development · Python · REST API

Pada artikel sebelumnya, kita telah membangun REST API Python berbasis Flask yang mampu menangani operasi CRUD dengan baik. Namun ada satu pertanyaan penting yang belum terjawab:

Siapa yang boleh mengakses data ini?

Di sinilah authentication dan authorization menjadi fondasi penting dalam membangun backend modern yang aman dan profesional.

Jika Anda belum membaca artikel sebelumnya, silakan mulai dari sini:
👉 Dari CRUD ke REST API Python: Backend Modern untuk Aplikasi Web

TL;DR

Authentication + JWT mengubah REST API biasa menjadi backend service yang aman, scalable, dan siap digunakan oleh web maupun aplikasi mobile.

Mengapa Authentication Wajib di REST API?

Tanpa authentication, setiap endpoint API adalah pintu terbuka. Siapa pun yang mengetahui URL dapat membaca, mengubah, bahkan menghapus data.

  • Tidak ada identitas user
  • Tidak ada kontrol akses
  • Tidak ada keamanan data

Inilah alasan mengapa authentication bukan fitur tambahan, melainkan pondasi sistem backend.

Evolusi Authentication: Dari Session ke Token

Session-Based Authentication

Digunakan pada aplikasi web klasik berbasis cookie. Kurang cocok untuk REST API modern karena tidak stateless.

Token-Based Authentication

REST API modern menggunakan token. Yang paling populer adalah JSON Web Token (JWT).

📚 Referensi resmi: https://jwt.io/introduction

Apa Itu JWT?

JWT adalah token terenkripsi yang berisi klaim tentang user. Token ini tidak disimpan di database, sehingga sangat cepat dan scalable.

HEADER.PAYLOAD.SIGNATURE

Contoh Payload JWT

{
  "user_id": 1,
  "email": "admin@teknologinalar.id",
  "role": "admin",
  "exp": 1735689600
}

Alur Authentication REST API dengan JWT

  1. User login
  2. Server memverifikasi kredensial
  3. Server membuat JWT
  4. Token dikirim ke client
  5. Client menyertakan token di setiap request

Instalasi Library Authentication Flask

pip install flask flask-jwt-extended werkzeug

📚 Dokumentasi resmi: Flask-JWT-Extended

Menyimpan Password dengan Aman

from werkzeug.security import generate_password_hash, check_password_hash

hashed = generate_password_hash("password123")
check_password_hash(hashed, "password123")

Jangan pernah menyimpan password dalam bentuk plaintext.

Membuat Endpoint Login

@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    user = User.query.filter_by(email=data['email']).first()

    if not user or not check_password_hash(user.password, data['password']):
        return jsonify({"msg": "Login gagal"}), 401

    token = create_access_token(identity={
        "id": user.id,
        "role": user.role
    })

    return jsonify(access_token=token)

Melindungi Endpoint dengan JWT

@app.route('/api/profile')
@jwt_required()
def profile():
    user = get_jwt_identity()
    return jsonify(user)

Authorization Berbasis Role

@app.route('/api/admin')
@jwt_required()
def admin_area():
    user = get_jwt_identity()
    if user['role'] != 'admin':
        return jsonify({"msg": "Forbidden"}), 403
    return jsonify({"msg": "Welcome admin"})

🚀 Anda Sudah Masuk Dunia Backend Profesional

Jika Anda memahami Authentication & JWT, berarti Anda sudah melangkah dari sekadar belajar Python ke membangun sistem backend modern.

Lanjutkan ke artikel berikutnya:
Authorization & RBAC di REST API Python

Penutup

Authentication dan JWT bukan sekadar fitur login, melainkan fondasi kepercayaan dalam sistem modern.

Jika Anda memahami artikel ini secara utuh, maka Anda sedang membangun skill backend yang relevan untuk tahun 2025 dan seterusnya.

Tidak ada komentar:

Posting Komentar