İçeriğe geç
Muhammet Şafak
Web Geliştirme 2 dk okuma

Basic Authentication

HTTP Basic Authentication nedir, nasıl çalışır ve ne zaman kullanılır? Temel kimlik doğrulama yönteminin işleyişi.


HTTP Basic Authentication, 1999’dan bu yana RFC 7617 ile standartlaşmış en eski kimlik doğrulama mekanizmalarından biridir. Modern uygulamaların büyük çoğunluğunda OAuth veya JWT tabanlı çözümler tercih edilse de Basic Authentication hâlâ geçerli bir araç — doğru bağlamda kullanıldığında.

Mekanizma kavramsal olarak basittir: kullaniciadı:şifre dizesi Base64 ile kodlanır ve her istekte Authorization başlığı olarak sunucuya iletilir. Sunucu bu başlığı çözümleyip doğrular; başlık yoksa veya geçersizse 401 Unauthorized yanıtı döner.

Nasıl çalışır

Bir istemci korumalı bir kaynağa erişmeye çalıştığında akış şöyle gelişir:

  1. Sunucu 401 Unauthorized yanıtıyla birlikte WWW-Authenticate: Basic realm="..." başlığı gönderir.
  2. İstemci, kullaniciadı:şifre dizesini Base64 ile kodlar.
  3. Sonraki istekte Authorization: Basic <kodlanmış_dize> başlığını ekler.
  4. Sunucu bu başlığı doğrular; geçerliyse kaynağa erişim verir.

Dikkat edilmesi gereken nokta: Base64 bir şifreleme değil, yalnızca bir kodlama yöntemidir. Kolaylıkla çözümlenebilir. Bu yüzden Basic Authentication’ı HTTPS olmadan kullanmak, şifreyi açık metin göndermekten farklı değildir.

PHP ile minimal bir örnek

const USERNAME = 'admin';
const PASSWORD = 'password';

function authenticate(string $username, string $password): bool
{
    return $username === USERNAME && $password === PASSWORD;
}

if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) && authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
    echo "Hoş Geldin @" . $_SERVER['PHP_AUTH_USER'];
} else {
    header('WWW-Authenticate: Basic realm="Giriş Yapın"');
    header('HTTP/1.0 401 Unauthorized');
    exit;
}

$_SERVER['PHP_AUTH_USER'] ve $_SERVER['PHP_AUTH_PW'], PHP’nin Authorization başlığını otomatik olarak ayrıştırıp sunduğu iki süper global değişkendir. Framework kullanan projelerde genellikle bu ayrıştırmayı middleware katmanı üstlenir.

Nerede kullanılır, nerede kullanılmaz

Basic Authentication’ın kazandığı en net bağlam: kapalı ağlarda servisler arası iletişim, geliştirme ve staging ortamlarındaki hızlı erişim kontrolü, basit araç veya dashboard’lar için tek kullanıcılı koruma katmanı.

Kullanılmaması gereken yerler ise daha belirgin: kullanıcı hesaplarının yönetildiği, şifre sıfırlama veya çok faktörlü doğrulama ihtiyacının ortaya çıktığı, token geçerliliği ve iptal mekanizması gerektiren her senaryo.

Güvenlik değerlendirmesi

HTTPS olmadan konuşlandırmak kabul edilemez; bu birinci kural, tartışmasız. Bunun ötesinde birkaç pratik tedbir söz konusu:

  • IP kısıtlaması veya VPN zorunluluğu — korumalı endpoint’i yalnızca belirli kaynak adreslerine açmak, credential sızması durumunda maruz kalınan yüzeyi önemli ölçüde daraltır.
  • Rate limiting — credential stuffing saldırılarına karşı belirli bir süre içindeki başarısız deneme sayısını sınırlamak minimum beklentidir.
  • Güçlü, döngüsel credential — insanların hatırlaması gereken bir şifre değilse, uzun ve rastgele bir değer kullanmak zor kaba kuvvet saldırılarını anlamsız kılar. API anahtarlarını de facto Basic Authentication olarak kullanan sistemlerin rotasyon stratejisi olması gerekir.
  • Başarısız denemede gecikme — bir doğrulama başarısız olduğunda yanıtı bilinçli olarak birkaç yüz milisaniye geciktirmek, otomatik kaba kuvvet araçlarının hızını gözle görülür biçimde düşürür; meşru kullanıcının deneyimine etkisi ise ihmal edilebilir düzeydedir.
  • Loglama — her 401 yanıtı kayıt altına alınmalı; tekrarlayan başarısız denemeler izlenmeli.

Basitliğin değeri

Kimlik doğrulama mekanizmaları arasında Basic Authentication’ı ilginç kılan şey teknik derinliği değil, doğru bağlamda sağladığı sürtünmesiz uyumdur. Bir servis hesabının dahili bir API’ye erişmesi için OAuth consent flow’u kurmak anlamsız mühendislik yüküdür. HTTPS üzerinde, ağ katmanında kısıtlanmış, tek bir özel credential ile çalışan bir endpoint için Basic Authentication yeterli ve yeterli olmaktan fazlasıdır.

Araç değişmedi; bağlamı doğru okumak değişti.

Paylaş:

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi