- Konu sahibi
- #1
Kimlik doğrulama ile yetkilendirme arasındaki fark
Kimlik doğrulama, kullanıcının kim olduğunu kanıtlama işlemidir. Yetkilendirme ise bir istemcinin hangi işlemleri yapabileceğini veya hangi verilere erişebileceğini belirler. Giriş yapma kimlik doğrulamaya örnektir; bir kaynağa veya işleme izin verilip verilmediğini kontrol etmek yetkilendirmedir. Herkese açık bir kaynak için anonim erişim de bilinçli bir yetkilendirme kararı olabilir.
Kimlik doğrulama nasıl çalışır?
Kullanıcı bir kullanıcı adı ve parola girdiğinde, sistem bu bilgilerin kayıtlı kimlikle eşleşip eşleşmediğini kontrol eder. Başarılıysa sistem kullanıcıya bir oturum, çerez veya erişim belirteci verir. Çok faktörlü doğrulama kullanılıyorsa parola gibi bilinen bir unsura ek olarak tek kullanımlık kod, güvenlik anahtarı veya biyometrik doğrulama gibi ikinci bir kanıt da aranır.
Bu aşamanın sonucu genellikle bir kimlik bilgisidir: örneğin
user_id=42. Kimlik doğrulama başarılı olsa bile bu, kullanıcının her işlemi yapabileceği anlamına gelmez.Yetkilendirme nasıl çalışır?
Korunan bir kaynakta yetkilendirme, doğrulanmış kimlik için izin kontrolünü içerir. Sistem kullanıcının rolünü, sahip olduğu izinleri veya erişmek istediği kaynağın sahibi olup olmadığını değerlendirir. Örneğin bir kullanıcı sisteme giriş yapabilir; ancak yalnızca kendi siparişlerini görüntüleyebilir, başka kullanıcıların siparişlerini silemeyebilir.
Yetkilendirme kontrolü her korunan işlemde yapılmalıdır. Sadece menüde bir düğmeyi gizlemek yeterli değildir; saldırgan aynı isteği doğrudan göndererek işlemi denemeyi sürdürebilir. Asıl kontrol sunucu tarafında yapılmalıdır.
Somut örnek
Kurgu bir içerik yönetim sisteminde editör hesabıyla giriş yapan bir kullanıcı düşünün:
- Parolanın ve varsa ikinci doğrulama unsurunun kontrol edilmesi kimlik doğrulamadır.
- Kullanıcı kimliğinin 42 olarak doğrulanması kimlik doğrulama sonucudur; editör rolünün ve izinlerinin değerlendirilmesi yetkilendirmeye girer.
- Editörün yazı oluşturabilmesi ancak kullanıcı silememesi yetkilendirmedir.
- Yönetici rolündeki kullanıcının kullanıcı hesabı silebilmesi, farklı bir yetki kuralıdır.
Örneğin kullanıcı
42 numaralı hesaba ait bir kaydı düzenlemek istediğinde uygulama yalnızca oturumun geçerli olup olmadığını değil, kaydın kullanıcıya ait olup olmadığını veya kullanıcının bu işlem için özel izni bulunup bulunmadığını da kontrol etmelidir.Uygulamada doğru kontrol sırası
Korunan bir istek için temel akış şu şekilde kurulabilir:
- İsteğin geçerli bir oturum veya erişim belirteci taşıyıp taşımadığını kontrol edin. Yoksa işlemi kimlik doğrulama gerektiren bir istek olarak sonlandırın.
- Oturumdan veya belirteçten kullanıcı kimliğini alın; istemcinin gönderdiği kullanıcı kimliğine tek başına güvenmeyin.
- Kullanıcının rolünü, özel izinlerini ve gerekiyorsa kaynağın sahipliğini sunucu tarafında değerlendirin.
- İzin varsa işlemi gerçekleştirin; izin yoksa işlemi reddedin ve veriyi değiştirmeyin.
- Başarısız kimlik doğrulama ve yetki denemelerini, parola veya erişim belirteci gibi gizli değerleri kaydetmeden incelemeye uygun şekilde günlükleyin.
Bir isteğin sonucu kabaca şöyle yorumlanır:
| Durum | Anlamı | Sonraki adım |
|---|---|---|
| Kimlik doğrulama yok veya geçersiz | Sistemin isteği yapan kişiyi tanıdığı kanıtlanmadı | Giriş veya yeniden doğrulama isteyin |
| Kimlik doğrulandı, yetki yok | Kullanıcı biliniyor ancak işlem için izni bulunmuyor | İşlemi reddedin ve izinleri inceleyin |
| Kimlik doğrulandı, yetki var | Kullanıcı tanınıyor ve işlem kuralı karşılanıyor | İşlemi uygulayın ve sonucu döndürün |
Bu ayrım, hata ayıklamayı da kolaylaştırır: Kullanıcı sisteme giremiyorsa kimlik doğrulama akışını; girebildiği halde belirli işlemi yapamıyorsa yetkilendirme kurallarını inceleyin.
Sık yapılan hatalar
Giriş yapmış olmayı tam yetki saymak: Geçerli oturum, yalnızca kullanıcının tanındığını gösterir. Rol ve kaynak izinleri ayrıca kontrol edilmelidir.
Yetkiyi yalnızca arayüzde saklamak: Gizlenen buton güvenlik kontrolü değildir. İstek doğrudan gönderildiğinde sunucu işlemi yeniden yetkilendirmelidir.
İstemciden gelen kullanıcı kimliğine güvenmek: URL veya form içindeki
user_id değeri değiştirilerek başka kullanıcının verisine erişim denenebilir. Kimlik oturumdan alınmalı, kaynak erişimi sahiplik veya izin kuralıyla doğrulanmalıdır.Rol adını izin kontrolü sanmak: Basit roller başlangıç için yeterli olabilir; ancak kaynak sahipliği, ekip sınırları veya işlem türü gibi koşullar ayrıca değerlendirilmelidir.
Sık sorulan sorular
Kimlik doğrulama ve yetkilendirme aynı sistemde mi yapılır?
Aynı uygulamada yapılabilir veya kimlik doğrulama ayrı bir kimlik sağlayıcıya bırakılabilir. Yetkilendirme kuralları ise çoğu durumda erişilen uygulama ve kaynağın bağlamında uygulanır.
Bir API anahtarı kimlik doğrulama mı, yetkilendirme mi?
API anahtarının geçerli olması isteği yapan istemciyi veya hesabı tanımlamaya yarıyorsa kimlik doğrulama işlevi görür. Anahtarın hangi uç noktalara ve işlemlere erişebileceğini belirlemek ise yetkilendirmedir. Tek bir anahtar her işleme otomatik olarak izin vermemelidir.