Study
Ktor

Authentication Plugin: JWT

Penjelasan

Ktor punya plugin Authentication resmi dengan dukungan JWT terintegrasi — dikonfigurasi lewat install(Authentication) { jwt { ... } }, lalu route yang perlu proteksi dibungkus authenticate("nama-config") { }. Route DI DALAM authenticate{} otomatis menolak request tanpa token valid dengan 401.

Contoh Konsep

import io.ktor.server.auth.*
import io.ktor.server.auth.jwt.*

fun Application.module() {
    install(Authentication) {
        jwt("auth-jwt") {
            verifier(JWT.require(Algorithm.HMAC256("kunci-rahasia")).build())
            validate { credential ->
                if (credential.payload.getClaim("user").asString() != "") JWTPrincipal(credential.payload) else null
            }
        }
    }

    routing {
        authenticate("auth-jwt") {
            get("/dashboard") {
                call.respondText("Selamat datang di dashboard")
            }
        }
    }
}

Praktikum

Tulis install(Authentication) dengan konfigurasi jwt("admin-jwt") memakai kunci "rahasia-admin". Bungkus route GET /admin dengan authenticate("admin-jwt") { }.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Sama seperti peringatan di framework Go: kunci rahasia JWT JANGAN PERNAH hardcoded di kode — di project sungguhan WAJIB dibaca dari environment variable lewat System.getenv("JWT_SECRET"), prinsip keamanan ini universal di semua bahasa/framework.