Bloğa Geri Dön

Laravel’de HTTP Basic Authentication Kullanımı

Laravel

22 Eyl, 2025, 07:49 Pazartesi

Ortalama okuma süresi 4 dakika

Laravel’de HTTP Basic Auth ile veritabanı olmadan bile saniyeler içinde admin paneli, test sayfası veya küçük API uçlarını şifre ile korumanın pratik yollarını bu yazımızda inceledik

Laravel’de HTTP Basic Authentication Kullanımı
Laravel’de HTTP Basic Authentication Kullanımı

Laravel’de HTTP Basic Authentication ile Basit ve Hızlı Kimlik Doğrulama

Web projelerinde bazen kullanıcıyı uzun oturum süreçlerine (login formu, cookie, token vs.) sokmadan hemen bir şifre koruması eklemek gerekir. Yayına çıkmamış bir admin paneli, sadece ekip içi erişilecek bir test sayfası veya basit bir API ucu gibi durumlarda HTTP Basic Authentication Laravel’de saniyeler içinde devreye alınabilir.

İşte bu gibi senaryolarda HTTP Basic Authentication Laravel ile saniyeler içinde devreye alınabilir.

Bu yazıda Laravel’in dahili Basic Auth middleware’ini, custom (özelleştirilmiş) Basic Auth yazımını, ve güvenlik ipuçlarını adım adım göreceğiz.


Tabii burdaki örnek senaryolar için daha profesyonel bir yaklaşım Laravel Pennant 'ın kullanılması olacaktır.. Ama projelerde her zaman bu kadar kapsamlı yapılar kurmak gerekmez ya da anlık ihtiyaçlara cevap vermek adına bu basit yapı gayet iş görecektir..


📌 Özet

Bu yazıda Laravel ile:

  • auth.basic middleware’inin kullanımı,
  • API uçları için onceBasic,
  • Database’siz custom Basic Auth yazımı,
  • Güvenlik ve best practice önerileri gibi konuları adım adım gördük.

Şimdi kendi projenizde basit bir şifre korumasına ihtiyaç duyduğunuzda bu yöntemlerden birini rahatlıkla uygulayabilirsiniz.


1️⃣ HTTP Basic Authentication Nedir?

HTTP Basic Auth, tarayıcının native olarak desteklediği basit bir kimlik doğrulama protokolüdür. Kullanıcı siteye erişmeye çalıştığında tarayıcı bir popup gösterir ve kullanıcı adı / şifre ister. Doğru bilgiler girildiğinde istek HTTP header’ında aşağıdaki gibi gönderilir:

Authorization: Basic base64(username:password)

Laravel bu header’ı okuyarak kullanıcıyı doğrular.

⚠️ Önemli: Basic Auth, bilgileri Base64 ile gönderir; yani şifre aslında şifrelenmemiştir. Mutlaka HTTPS kullanmak gerekir.


2️⃣ Laravel’in Hazır auth.basic Middleware’i

Laravel, dahili auth.basic middleware’i ile Basic Auth’u tek satırda kullanmamızı sağlar. Örneğin bir admin sayfasını korumak için:

routes/web.php

Route::get('/admin', function () {
    return 'Admin paneline hoş geldiniz!';
})->middleware('auth.basic');
  • Bu middleware, users tablosundaki email ve password alanlarına göre doğrulama yapar.
  • Kullanıcı adı olarak varsayılan email kullanılır, şifre ise bcrypt hash’inden kontrol edilir.

Kullanıcı Alanını Özelleştirme

Eğer email yerine username ile doğrulama yapmak isterseniz:

Route::get('/admin', function () {
    return 'Username ile doğrulama yapılıyor';
})->middleware('auth.basic:username');

Burada username, users tablosundaki kolon adıdır.


3️⃣ Stateless API İçin onceBasic()

Eğer session (cookie) tutmak istemiyorsanız, örneğin basit bir API endpoint’i korumak için:

use Illuminate\Support\Facades\Auth;

Route::get('/api/secret', function () {
    return Auth::onceBasic() ?: response()->json(['data' => 'Gizli veri']);
});
  • onceBasic() her istek için doğrulama ister.
  • Cookie veya session açmaz.
  • Webhook gibi ufak servisler için birebir.

4️⃣ Database Kullanmadan Basic Auth (Custom Middleware)

Bazen veritabanı olmadan tek bir sabit kullanıcı adı/şifre ile koruma yapmak isteyebilirsiniz. Laravel’in default middleware’i buna izin vermez. Bu durumda kendi middleware’imizi yazabiliriz.

Middleware Oluşturma

php artisan make:middleware BasicAuthenticationMiddleware

app/Http/Middleware/BasicAuthenticationMiddleware.php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class BasicAuthenticationMiddleware
{
    public function handle(Request $request, Closure $next)
    {
		// Gerçekte kullanıcı adı ve şifreyi .env dosyasından çekmek daha güvenlidir.
        // $username = env('BASIC_USER', 'demo');
        // $password = env('BASIC_PASS', 'demo123');

		// Bu örnekte basitlik için sabit değer kullandım.
		$username = 'AlixcaN';
		$password = 'SüperGizliŞifrem';

        if ($request->getUser() !== $username || $request->getPassword() !== $password) {
            return response('Unauthorized', 401, ['WWW-Authenticate' => 'Basic']);
        }

        return $next($request);
    }
}

routes/web.php

use App\Http\Middleware\BasicAuthenticationMiddleware;

Route::get('/secret', function () {
    return 'Bu sayfa sabit Basic Auth ile korundu';
})->middleware(BasicAuthenticationMiddleware::class);

.env Dosyası

...

BASIC_USER="Alixcan"
BASIC_PASS="SüperGizliŞifrem"
...

✅ Avantajlar:

  • Veritabanına gerek yok.
  • Kullanıcı/şifreyi kod yerine .env dosyasında tutmak güvenlik ve esneklik sağlar.

5️⃣ Güvenlik İpuçları

  1. HTTPS Kullanımı Basic Auth kullanıcı bilgilerini Base64 ile gönderir → sadece HTTPS üzerinden çalıştırın.

  2. Rate Limiting Brute force saldırılarına karşı Laravel’in throttle middleware’ini ekleyin:

    Route::middleware(['throttle:10,1', BasicAuthenticationMiddleware::class])
         ->get('/secret', fn() => 'Gizli');
    
  3. Log Temizliği Bazı serverlar header’ları loglayabilir. Sunucu log ayarlarınızı kontrol edin.

  4. Environment Değerleri Kullanıcı adı ve şifreyi .env dosyasından alın; kod içine sabitlemeyin.


6️⃣ Hangi Durumlarda Kullanılır?

  • Yayına çıkmamış yönetim panelleri
  • İç ağda çalışan basit dashboard’lar
  • Public’e açık olmaması gereken API uçları
  • Demo/prototip uygulamalar

➡️ Uzun vadeli ve çok kullanıcılı sistemlerde Laravel Sanctum / Passport gibi token tabanlı çözümler tercih edilmelidir.


🎯 Sonuç

Laravel, hem dahili auth.basic middleware’i hem de özelleştirilebilir middleware yazma imkanı sayesinde hızlı ve basit şifre koruması eklemek için güçlü seçenekler sunar.

  • Tek kullanıcı için .env + custom middleware en pratik çözümdür.
  • Kullanıcı tabanlı erişim için Laravel’in auth.basic middleware’i yeterlidir.
  • Her senaryoda HTTPS ve rate limit kritik güvenlik önlemleridir.

💡 İleri Okuma:


🔹 Diğer kaynaklar

Bu içerikte yer alan bazı başlık ve örneklerin şekillenmesinde OpenAI ChatGPT’den yararlandım. Nihai düzenlemeler ve tüm içerik tarafımdan revize edilmiştir.

Fullstack Web Developper & Laravel Dev & SysAdmin

Kategoriden Yazılar
Yazardan Yazılar
[Paket] - Laravel Eloquent Query Cache

Bu paket, kullanılan SQL sorgularını izleyip önbellekte anahtar olarak kullanabilme yeteneğine sahiptir. Bu sayede, sorguya özel önbellekleme oldukça kolay hale gelir ve ORM kullanımınızdan bağımsız çalışır.

Laravel Eloquent Query Cache
Laravel Projeleri Nasıl Yayınlanır? LaraSail ile DigitalOcean ve Ubuntu Deploy Rehberi

Laravel projenizi yayına almak için Nginx kurulumu, PHP sürüm ayarları veya SSL yapılandırmasıyla uğraşmak zorunda değilsiniz. LaraSail, tüm bu teknik süreçleri otomatikleştirerek deploy işlemini oldukça basit hale getirir.

LaraSail ile DigitalOcean ve Ubuntu Deploy Rehberi
SAP B1 Entegre Mesai ve İzin Takip Sistemi ile İnsan Kaynaklarında Dijital Dönüşüm

Kurumsal işletmeler için geliştirilen SAP entegre mesai ve izin takip sistemi, hem üretim hem idari alanlarda süreçleri dijitalleştiriyor. Anlık raporlama, mobil uyumlu kullanım, resmi belge ve imza yönetimi, gelişmiş filtreleme ve PKDS entegrasyonu ile insan kaynakları yönetimini hızlandırıyor ve şeffaflaştırıyor.

SAP B1 Entegre Mesai ve İzin Takip Sistemi ile İnsan Kaynaklarında Dijital Dönüşüm
Talaşlı İmalatta SAP ile Elmas Takibi: ERP Destekli Kesici Takım Yönetimi

Talaşlı imalat süreçlerinde kesici elmasların hangi personel, hangi departman ve hangi proje için ne kadar tüketildiğini anlık olarak izlemek artık mümkün. SAP Business One üzerine geliştirdiğimiz Elmas Analiz ekranı; stok optimizasyonu, maliyet kontrolü ve proje bazlı raporlama ihtiyaçlarını tek bir ekranda birleştirerek üretim sahasında şeffaflık ve hız sağlıyor.

SAP’de ISO 9001’e Uygun Onaylı Tedarikçi Skorlama ve Performans Yönetimi

SAP Business One üzerinde geliştirdiğimiz onaylı tedarikçi yönetim sistemi; kalite, teslimat, fiyat ve miktar kriterlerini ağırlıklı skor kartı ile izleyerek ISO 9001:2015’in 8.4 maddesine tam uyum sağlıyor. Bu yazıda tedarikçi performansını puanlayan ekranlar, raporlama araçları ve denetime hazır süreçlerin nasıl kurulduğunu detaylı olarak inceleyebilirsiniz.

SAP’de ISO 9001’e Uygun Onaylı Tedarikçi Skorlama ve Performans Yönetimi