Kimlik Doğrulama
Authentication
- İngilizcesi
- Authentication
- Okunuşu
- otentikeyşın
Günlük kullanımda iki ad da yaygın.
Kısaca
Kimlik doğrulama, bir kullanıcının, cihazın veya servisin gerçekten iddia ettiği kişi olduğunu, örneğin parola ya da passkey kontrol ederek doğrulama işlemidir.
Kimlik doğrulama nedir?
Kimlik doğrulama, “Sen kimsin?” sorusuna yanıt verir. Bir uygulama özel verileri göstermeden veya değişiklikleri kabul etmeden önce, isteği yapan kişi ya da programın hesabın gerçek sahibi olduğuna dair kanıta ihtiyaç duyar. Bu kanıta kimlik bilgisi (credential) denir; başarılı bir kontrolün ardından sunucu genellikle bir oturum çerezi oluşturur veya bir token verir; böylece kullanıcının her istekte yeniden giriş yapması gerekmez.
Kimlik bilgileri üç klasik faktöre ayrılır: parola veya PIN gibi bildiğiniz bir şey; telefon veya donanım güvenlik anahtarı gibi sahip olduğunuz bir şey; parmak izi veya yüz taraması gibi olduğunuz bir şey. İki veya daha fazla faktörü birleştirmeye çok faktörlü kimlik doğrulama denir. WebAuthn standardına dayanan passkey'ler, bir cihaza bağlı açık anahtarlı kriptografi kullanır ve phishing'e karşı dirençlidir; bu yüzden giderek parolaların yerini almaktadır.
Kimlik doğrulama sürekli yetkilendirmeyle karıştırılır. Kimlik doğrulama kimliği kanıtlar, yetkilendirme ise o kimliğin ne yapmasına izin verildiğine karar verir: bir havalimanında pasaportunuzu göstermek kimlik doğrulamadır, hangi uçağa binebileceğinize karar veren biniş kartınız ise yetkilendirmedir. Kimlik doğrulamayı geçemeyen bir istek genellikle 401 Unauthorized yanıtı alır; izni olmayan bilinen bir kullanıcı ise 403 Forbidden alır.
Girişleri korumak için parolaları yalnızca Argon2id veya bcrypt ile salt'lı hash olarak saklayın, iki faktörlü kimlik doğrulama veya passkey sunun ve parola tahminini ve saldırganların diğer sitelerden sızdırılmış parolaları denediği credential stuffing saldırısını yavaşlatmak için giriş denemelerine hız sınırı koyun. Saldırganların hangi hesapların var olduğunu öğrenememesi için “Geçersiz e-posta veya parola” gibi genel bir hata mesajı kullanın ve kimlik doğrulama kodunu sıfırdan yazmak yerine iyi test edilmiş bir kimlik sağlayıcısını ya da kütüphaneyi tercih edin.
Bir bakışta
Önemli noktalar
- Kimlik doğrulama kimliği doğrular; “Sen kimsin?” sorusuna yanıt verir.
- Faktörler bildiğiniz bir şey, sahip olduğunuz bir şey ve olduğunuz bir şeydir.
- Girişten sonra bir oturum çerezi veya token kullanıcıyı doğrulanmış tutar.
- Kimlik doğrulama, kullanıcının ne yapabileceğine karar veren yetkilendirme değildir.
- Girişleri hash'lenmiş parolalar, 2FA veya passkey'ler ve hız sınırlamasıyla koruyun.
Örnek
app.post("/login", loginRateLimit, async (req, res) => {
const { email, password } = req.body;
const user = await db.users.findByEmail(email);
// Compare with the stored bcrypt hash, never a plain-text password
const ok = user && (await bcrypt.compare(password, user.passwordHash));
if (!ok) {
// Same message either way, so attackers cannot probe which emails exist
return res.status(401).send("Invalid email or password");
}
req.session.userId = user.id; // the user is now authenticated
res.redirect("/dashboard");
});Sık sorulan sorular
Kimlik doğrulama ile yetkilendirme arasındaki fark nedir?
Kimlik doğrulama, kullanıcının kim olduğunu, örneğin parola ya da passkey kontrol ederek doğrular. Yetkilendirme bunun ardından gelir ve doğrulanmış kullanıcının neye erişebileceğine veya neyi değiştirebileceğine karar verir.
Passkey nedir?
Passkey, açık anahtarlı kriptografiye dayanan, bir cihazda veya parola yöneticisinde saklanan ve parmak izi, yüz taraması veya PIN ile açılan bir giriş kimlik bilgisidir. Özel anahtar cihazdan asla çıkmaz ve yalnızca gerçek web sitesinde çalışır; sunucu yalnızca açık anahtarı saklar. Bu yüzden passkey'ler phishing'e dirençlidir ve sunucu veritabanını çalan saldırganlar için işe yaramaz.
HTTP 401 ne anlama gelir?
Adına rağmen 401 Unauthorized, isteğin eksik veya süresi dolmuş bir token gibi geçerli kimlik doğrulamasından yoksun olduğu anlamına gelir. Kullanıcı doğrulanmış ama bir işlemi yapmasına izin verilmiyorsa doğru durum kodu 403 Forbidden'dır.
Sık karşılaştırılanlar
İlgili sayfalar
- YetkilendirmeGüvenlik, s. 48Yetkilendirme, kimliği doğrulanmış bir kullanıcının ya da servisin hangi verileri okuyabileceğine, değiştirebileceğine veya silebileceğine karar vermektir.
- İki Faktörlü Kimlik DoğrulamaGüvenlik, s. 16İki faktörlü kimlik doğrulama, kimliği doğrulamak için parola artı bir kod ya da güvenlik anahtarı gibi iki farklı türde kanıt isteyen bir giriş yöntemidir.
- HashingGüvenlik, s. 12Hashing, bir girdiyi tek yönlü bir fonksiyonla sabit uzunlukta bir değere dönüştürmektir; veri bütünlüğünü doğrulamaya ve parolaları güvenle saklamaya yarar.
- OAuthGüvenlik, s. 21OAuth, bir uygulamanın kullanıcının parolasını hiç görmeden başka bir servisteki verilerine erişmesini sağlayan açık bir yetkilendirme standardıdır.
- JWTGüvenlik, s. 17JWT, kullanıcı kimliği ve son kullanma zamanı gibi bilgileri taşıyan, imzalı ve kompakt bir token'dır; sunucunun oturum aramadan istekleri doğrulamasını sağlar.
- CookieWeb Geliştirme, s. 7Cookie, bir web sitesinin tarayıcıdan saklamasını ve sonraki isteklerle geri göndermesini istediği, çoğunlukla oturum açık tutmak için kullanılan küçük veridir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin