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") { }.
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.