0Pricing
Learn Rust Coding · Pelajaran

Autentikasi dan Otorisasi

Terapkan autentikasi pengguna yang aman (misalnya JWT) dan mekanisme otorisasi untuk melindungi titik akhir layanan web Anda.

Autentikasi dan Otorisasi adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Amankan Layanan Web Anda

Selamat datang! Dalam pelajaran ini, Anda akan mempelajari Autentikasi dan Otorisasi, dua konsep penting untuk membangun layanan web yang aman dengan Rust.

Anda akan mempelajari cara melindungi titik akhir API dengan memastikan hanya pengguna yang sah yang dapat mengaksesnya, dan hanya dengan izin yang tepat.

Autentikasi vs. Otorisasi

Kedua istilah ini terdengar mirip, tetapi memiliki arti yang berbeda:

  • Autentikasi: Memverifikasi siapa Anda. Ini seperti menunjukkan ID Anda untuk memasuki sebuah gedung.
  • Otorisasi: Menentukan apa yang boleh Anda lakukan. Setelah berada di dalam, hal ini menentukan ruangan mana yang boleh Anda masuki.

Kita akan menerapkan keduanya untuk mengamankan layanan web Rust.

Mengapa API Anda Perlu Diamankan?

Melindungi titik akhir API sangat penting karena beberapa alasan:

  • Privasi Data: Menjaga data pengguna yang sensitif agar aman dari akses yang tidak sah.
  • Integritas Sistem: Mencegah pihak berbahaya mengubah atau merusak data Anda.
  • Kepatuhan: Memenuhi persyaratan hukum dan peraturan (misalnya, GDPR, HIPAA).

Lapisan keamanan yang kuat membangun kepercayaan dan melindungi aplikasi Anda.

JSON Web Token (JWT)

Salah satu metode populer untuk autentikasi dalam layanan web modern adalah menggunakan JSON Web Token (JWT), yang dilafalkan "jot".

JWT adalah sarana ringkas dan aman untuk URL untuk merepresentasikan Claims yang akan dikirimkan antara dua pihak. JWT sering digunakan untuk autentikasi tanpa status.

Artinya, server tidak perlu menyimpan informasi sesi untuk setiap pengguna.

Di Dalam JWT: Header, Payload, Tanda Tangan

JWT terdiri dari tiga bagian yang dipisahkan oleh titik:

  • Header: Berisi metadata tentang token, seperti jenis token (JWT) dan algoritme penandatanganan (misalnya, HS256).
  • Payload: Berisi "Claims"—pernyataan tentang suatu entitas (biasanya pengguna) dan data tambahan.
  • Tanda Tangan: Digunakan untuk memverifikasi bahwa token tidak telah diubah. Tanda tangan dibuat dengan menyandikan header dan payload menggunakan kunci rahasia.

Membuat & Memverifikasi JWT di Rust

Mari kita lihat cara membuat dan memverifikasi JWT menggunakan crate jsonwebtoken di Rust. Ingat, Anda perlu menambahkan jsonwebtoken, serde (dengan fitur "derive"), dan chrono (dengan fitur "serde") ke Cargo.toml.

Contoh ini membuat sebuah token, lalu langsung memverifikasinya.

use jsonwebtoken::{encode, decode, Header, EncodingKey, DecodingKey, Validation};
use serde::{Deserialize, Serialize};
use chrono::{Utc, Duration};

#[derive(Debug, Serialize, Deserialize)]
struct Claims {
    sub: String, // Subject (user ID)
    company: String,
    exp: usize,  // Expiration time
}

fn main() {
    // --- Setup (requires crates: jsonwebtoken, serde, chrono) ---
    let secret_key = "my_super_secret_key";

    // --- 1. Generate a JWT ---
    let my_claims = Claims {
        sub: "user123".to_string(),
        company: "CoddyKit".to_string(),
        exp: (Utc::now() + Duration::minutes(10)).timestamp() as usize,
    };
    let token = encode(
        &Header::default(),
        &my_claims,
        &EncodingKey::from_secret(secret_key.as_ref()),
    ).expect("Failed to encode token");
    println!("Generated JWT:\n{}", token);
    println!("\n--- Verifying the Token ---");

    // --- 2. Verify the JWT ---
    let validation = Validation::default();
    let decoded_result = decode::<Claims>(
        &token,
        &DecodingKey::from_secret(secret_key.as_ref()),
        &validation,
    );

    match decoded_result {
        Ok(token_data) => {
            println!("Token valid!");
            println!("Subject: {}", token_data.claims.sub);
            println!("Company: {}", token_data.claims.company);
        },
        Err(err) => println!("Token invalid: {:?}", err),
    }
}

Otorisasi: Menentukan Akses

Setelah pengguna terautentikasi (kita mengetahui siapa mereka), otorisasi menentukan sumber daya atau tindakan yang boleh mereka akses.

Model otorisasi yang umum meliputi:

  • Kontrol Akses Berbasis Peran (RBAC): Pengguna diberi peran (misalnya, "admin", "editor", "viewer"), dan setiap peran memiliki izin tertentu.
  • Kontrol Akses Berbasis Atribut (ABAC): Akses diberikan berdasarkan atribut pengguna, sumber daya, atau lingkungan.

Konsep Middleware Otorisasi

Dalam layanan web, otorisasi sering ditangani oleh middleware. Ini adalah kode yang berjalan sebelum penangan rute utama Anda.

Middleware akan:

  1. Mengekstrak identitas pengguna yang telah terautentikasi (misalnya, dari JWT).
  2. Memeriksa peran atau izin mereka terhadap akses yang diperlukan untuk titik akhir yang diminta.
  3. Jika diizinkan, membolehkan permintaan dilanjutkan; jika tidak, mengembalikan kesalahan "Tidak Diotorisasi" atau "Dilarang".

Dengan demikian, penangan rute tetap bersih dan berfokus pada logika bisnis.

Menguji Pengetahuan Anda

Mari kita periksa secara singkat pemahaman Anda tentang autentikasi dan otorisasi.

Ringkasan: Mengamankan Layanan Web

Bagus sekali! Dalam pelajaran ini, kita telah membahas hal-hal penting untuk mengamankan layanan web Rust Anda:

  • Perbedaan antara Autentikasi (siapa Anda) dan Otorisasi (apa yang dapat Anda lakukan).
  • Pentingnya melindungi titik akhir API.
  • Cara kerja JSON Web Token (JWT) untuk autentikasi tanpa status, termasuk strukturnya.
  • Contoh praktis Rust untuk membuat dan memverifikasi JWT.
  • Konsep Kontrol Akses Berbasis Peran dan cara middleware menerapkan pemeriksaan otorisasi.

Sekarang Anda siap membangun aplikasi Rust yang lebih aman dan tangguh!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Autentikasi dan Otorisasi” gratis?

Ya — teks lengkap “Autentikasi dan Otorisasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Autentikasi dan Otorisasi”?

Terapkan autentikasi pengguna yang aman (misalnya JWT) dan mekanisme otorisasi untuk melindungi titik akhir layanan web Anda. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Autentikasi dan Otorisasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API REST dengan Actix-web/Rocket
  2. Integrasi Basis Data (SQLx/Diesel)
  3. Autentikasi dan Otorisasi
← Kembali ke Learn Rust Coding