Kimlik Doğrulama ve Yetkilendirme
Web hizmetinizin uç noktalarını korumak için güvenli kullanıcı kimlik doğrulaması (ör. JWT) ve yetkilendirme mekanizmaları uygulayın.
Kimlik Doğrulama ve Yetkilendirme, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 3 dersinin 3. 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, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 3 dersten oluşur.
Web Hizmetlerinizi Güvence Altına Alın
Hoş geldiniz! Bu derste, Rust'ta güvenli web hizmetleri oluşturmak için kritik öneme sahip Kimlik Doğrulama ve Yetkilendirme kavramlarını ayrıntılı olarak inceleyeceğiz.
Yalnızca meşru kullanıcıların API uç noktalarınıza ve yalnızca doğru izinlerle erişebilmesini sağlayarak API'nizi nasıl koruyacağınızı öğreneceksiniz.
Kimlik Doğrulama ve Yetkilendirme Karşılaştırması
Bu iki terim benzer görünür ancak farklı anlamlara gelir:
- Kimlik Doğrulama: kim olduğunuzu doğrular. Bir binaya girmek için kimliğinizi göstermek gibidir.
- Yetkilendirme: neleri yapmanıza izin verildiğini belirler. İçeri girdikten sonra hangi odalara girebileceğinizle ilgilidir.
Rust web hizmetlerimizi güvence altına almak için her ikisini de uygulayacağız.
API'lerinizi Neden Güvence Altına Almalısınız?
API uç noktalarınızı korumak birkaç nedenle hayati önem taşır:
- Veri Gizliliği: Hassas kullanıcı verilerini yetkisiz erişime karşı koruyun.
- Sistem Bütünlüğü: Kötü niyetli kişilerin verilerinizi değiştirmesini veya bozmasını önleyin.
- Uyumluluk: Yasal ve düzenleyici gereksinimleri karşılayın (örneğin GDPR, HIPAA).
Sağlam bir güvenlik katmanı güven oluşturur ve uygulamanızı korur.
JSON Web Token'ları (JWT'ler)
Modern web hizmetlerinde kimlik doğrulama için popüler bir yöntem, "jot" diye telaffuz edilen JSON Web Token'larını (JWT'ler) kullanmaktır.
JWT'ler, iki taraf arasında aktarılacak Claims değerlerini temsil etmenin kısa ve URL açısından güvenli bir yoludur. Genellikle durumsuz kimlik doğrulama için kullanılırlar.
Bu, sunucunun her kullanıcı için oturum bilgilerini depolamasının gerekmediği anlamına gelir.
JWT'nin İçinde: Üst Bilgi, Yük ve İmza
Bir JWT, noktalarla ayrılmış üç bölümden oluşur:
- Üst Bilgi: Token türü (JWT) ve imzalama algoritması (örneğin HS256) gibi token hakkında üst veriler içerir.
- Yük: Bir varlık (genellikle kullanıcı) hakkındaki ifadeler olan "Claims" değerlerini ve ek verileri içerir.
- İmza: Token'ın üzerinde oynanmadığını doğrulamak için kullanılır. Üst bilgi ile yük, bir gizli anahtarla kodlanarak oluşturulur.
Rust'ta JWT Oluşturma ve Doğrulama
Rust'ta jsonwebtoken paketini kullanarak bir JWT'nin nasıl oluşturulup doğrulanacağını görelim. jsonwebtoken, serde ("derive" özelliğiyle) ve chrono ("serde" özelliğiyle) paketlerini Cargo.toml dosyanıza eklemeniz gerektiğini unutmayın.
Bu örnek bir token oluşturur ve ardından hemen doğrular.
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),
}
}Yetkilendirme: Erişimi Tanımlama
Bir kullanıcı kimlik doğrulamasından geçtiğinde (kim olduğunu bildiğimizde), yetkilendirme hangi kaynaklara veya eylemlere erişmesine izin verildiğini belirler.
Yaygın yetkilendirme modelleri şunlardır:
- Role Dayalı Erişim Denetimi (RBAC): Kullanıcılara roller (örneğin "admin", "editor", "viewer") atanır ve rollerin belirli izinleri vardır.
- Öznitelik Tabanlı Erişim Denetimi (ABAC): Erişim, kullanıcının, kaynağın veya ortamın özniteliklerine göre verilir.
Yetkilendirme Ara Katmanı Kavramı
Bir web hizmetinde yetkilendirme çoğu zaman ara katman tarafından gerçekleştirilir. Bu, ana yol işleyicinizden önce çalışan koddur.
Ara katman şunları yapar:
- Kimliği doğrulanmış kullanıcının kimliğini çıkarır (örneğin bir JWT'den).
- Rollerini veya izinlerini, istenen uç nokta için gerekli erişimle karşılaştırır.
- Yetki varsa isteğin devam etmesine izin verir; aksi takdirde "Yetkisiz" veya "Yasaklandı" hatası döndürür.
Bu, yol işleyicilerinizin temiz kalmasını ve iş mantığına odaklanmasını sağlar.
Bilginizi Sınayın
Kimlik doğrulama ve yetkilendirme konusundaki anlayışınızı hızlıca kontrol edelim.
Özet: Web Hizmetlerini Güvence Altına Alma
Harika iş çıkardınız! Bu derste Rust web hizmetlerinizi güvenceye almanın temel noktalarını ele aldık:
- Kimlik doğrulama (kim olduğunuz) ile yetkilendirme (neleri yapabileceğiniz) arasındaki fark.
- API uç noktalarını korumanın önemi.
- Durumsuz kimlik doğrulama için JSON Web Token'ların (JWT'ler) nasıl çalıştığı ve yapıları.
- JWT oluşturma ve doğrulamaya ilişkin uygulamalı bir Rust örneği.
- Role Dayalı Erişim Denetimi kavramı ve ara katmanın yetkilendirme denetimlerini nasıl uygulayabileceği.
Artık daha güvenli ve sağlam Rust uygulamaları geliştirmeye hazırsınız!
Sıkça Sorulan Sorular
“Kimlik Doğrulama ve Yetkilendirme” dersi ücretsiz mi?
Evet — “Kimlik Doğrulama ve Yetkilendirme” 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 Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 3 dersten oluşur.
“Kimlik Doğrulama ve Yetkilendirme” dersinde ne öğreneceğim?
Web hizmetinizin uç noktalarını korumak için güvenli kullanıcı kimlik doğrulaması (ör. JWT) ve yetkilendirme mekanizmaları uygulayın. Learn Rust Coding 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.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, 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, 3 dersinin 3. dersidir.
“Kimlik Doğrulama ve Yetkilendirme” 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 Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding 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
- Actix-web/Rocket ile REST API'leri
- Veritabanı Entegrasyonu (SQLx/Diesel)
- Kimlik Doğrulama ve Yetkilendirme