Kimlik Doğrulama Eklentileri: JWT ve Oturum
JWT taşıyıcı belirteçleri ve oturum tabanlı kimlik doğrulamayla Ktor yönlendirmelerini güvenceye alın.
Kimlik Doğrulama Eklentileri: JWT ve Oturum, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Ktor Kimlik Doğrulamaya Genel Bakış
Ktor'un Authentication eklentisi, rotaları korumak için birleşik bir API sağlar. Bir veya daha fazla sağlayıcı (JWT, Oturum, Basic, OAuth vb.) yapılandırır, ardından rotaları authenticate("providerName") { } bloğuna alırsınız.
Kimlik Doğrulama Bağımlılıklarını Ekleme
Kimlik doğrulama ve JWT kitaplıklarını derlemenize ekleyin:
dependencies {
implementation("io.ktor:ktor-server-auth:2.3.12")
implementation("io.ktor:ktor-server-auth-jwt:2.3.12")
implementation("io.ktor:ktor-server-sessions:2.3.12")
}JWT Kimlik Doğrulamasını Yapılandırma
Authentication eklentisini yükleyin ve bir JWT sağlayıcısı yapılandırın. verifier belirtecin imzasını doğrular; validate ise yükten asıl kullanıcıyı çıkarır:
install(Authentication) {
jwt("auth-jwt") {
realm = "ktor app"
verifier(
JWT.require(Algorithm.HMAC256(secret))
.withAudience(audience)
.withIssuer(issuer)
.build()
)
validate { credential ->
if (credential.payload.getClaim("username").asString() != null)
JWTPrincipal(credential.payload)
else null
}
}
}Rotaları JWT ile Koruma
Herhangi bir rota grubunu authenticate("auth-jwt") { } içine alın. Kimliği doğrulanmamış istekler otomatik olarak 401 yanıtı alır:
routing {
authenticate("auth-jwt") {
get("/protected") {
val principal = call.principal<JWTPrincipal>()!!
val username = principal.payload.getClaim("username").asString()
call.respondText("Hello, $username")
}
}
}JWT Belirteci Oluşturma
Giriş uç noktasında java-jwt kitaplığını kullanarak bir JWT oluşturup imzalayın:
post("/login") {
val user = call.receive<LoginRequest>()
// validate credentials ...
val token = JWT.create()
.withAudience(audience)
.withIssuer(issuer)
.withClaim("username", user.username)
.withExpiresAt(Date(System.currentTimeMillis() + 3_600_000))
.sign(Algorithm.HMAC256(secret))
call.respond(mapOf("token" to token))
}Oturum Kimlik Doğrulaması
Oturumlar, kullanıcı durumunu sunucu tarafında (veya imzalı çerezler olarak istemci tarafında) saklar. Sessions eklentisini yükleyin ve bir oturum veri sınıfı tanımlayın:
data class UserSession(val userId: Long, val username: String)
install(Sessions) {
cookie<UserSession>("user_session") {
cookie.path = "/"
cookie.httpOnly = true
}
}Oturum Kimlik Doğrulama Sağlayıcısını Yapılandırma
Oturumu okuyup bir asıl kullanıcı döndüren bir oturum kimlik doğrulama sağlayıcısı oluşturun:
install(Authentication) {
session<UserSession>("auth-session") {
validate { session -> session }
challenge { call.respond(HttpStatusCode.Unauthorized) }
}
}Oturumları Ayarlama ve Temizleme
Giriş yaptıktan sonra call.sessions.set() ile bir oturum ayarlayın, çıkış yaparken call.sessions.clear ile bu oturumu temizleyin:
post("/login") {
val creds = call.receive<LoginRequest>()
// validate ...
call.sessions.set(UserSession(userId = 1L, username = creds.username))
call.respond(HttpStatusCode.OK)
}
post("/logout") {
call.sessions.clear<UserSession>()
call.respond(HttpStatusCode.OK)
}JWT ve Oturum: Hangisi Ne Zaman Kullanılmalı
JWT: durum bilgisi tutmaz; mobil veya SPA istemcilerinin kullandığı API'ler için uygundur. Belirteç tüm talepleri taşır; sunucunun bir oturum deposuna ihtiyacı yoktur. Oturumlar: durum bilgisi tutar; sunucu tarafından oluşturulan web uygulamaları için uygundur. Oturum kimliği çerezde tutulur; sunucu verileri (bellek, Redis veya veritabanında) saklar.
Birden Çok Kimlik Doğrulama Sağlayıcısını Birleştirme
Birden çok sağlayıcı tanımlayabilir ve authenticate("jwt", "session") { } kullanarak bunlardan herhangi birini zorunlu kılabilirsiniz. Ktor her sağlayıcıyı sırayla dener ve sağlayıcılardan biri doğrulamayı başarıyla tamamladığında isteği kabul eder.
Özel Kimlik Doğrulama Yanıtları
Her sağlayıcının, kimlik doğrulaması başarısız olduğunda ne yapılacağını tanımlayan bir challenge bloğu vardır. Varsayılan WWW-Authenticate üst bilgisi yerine JSON hata gövdesiyle 401 yanıtı döndürün:
jwt("auth-jwt") {
// ...
challenge { _, _ ->
call.respond(HttpStatusCode.Unauthorized, mapOf("error" to "Token expired or invalid"))
}
}Hızlı Kontrol
Bir Ktor JWT sağlayıcısındaki validate bloğu ne yapar?
Özet: Kimlik Doğrulama Eklentileri — JWT ve Oturum
Önemli noktalar:
Authenticationyükleyin; sağlayıcıları (jwt, session, basic, oauth) yapılandırın- Rotaları
authenticate("providerName") { }ile koruyun - JWT: durum bilgisi tutmayan belirteçlerdir; giriş sırasında imzalayın,
verifierile doğrulayın, taleplerivalidateiçinde okuyun - Oturumlar: durum bilgisi tutar; girişte
call.sessions.set(), çıkıştaclear()kullanın - 401 yanıtının biçimini özelleştirmek için
challengekullanın
Sıkça Sorulan Sorular
“Kimlik Doğrulama Eklentileri: JWT ve Oturum” dersi ücretsiz mi?
Evet — “Kimlik Doğrulama Eklentileri: JWT ve Oturum” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Kimlik Doğrulama Eklentileri: JWT ve Oturum” dersinde ne öğreneceğim?
JWT taşıyıcı belirteçleri ve oturum tabanlı kimlik doğrulamayla Ktor yönlendirmelerini güvenceye alın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kimlik Doğrulama Eklentileri: JWT ve Oturum” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri
- Yönlendirme ve Türlendirilmiş Parametreler
- İçerik Anlaşması ve kotlinx.serialization
- Kimlik Doğrulama Eklentileri: JWT ve Oturum