design

Laravel'de API Authentication: Token ve OAuth ile Güvenli Erişim

April 4, 2025


1. API Authentication Nedir? 🤔

API Authentication, kullanıcıların kimliğini doğrulama sürecidir:

  • Yetkisiz erişimi engeller 🛡️
  • Kullanıcı başına özel içerik sağlar 🔐
  • API güvenliğinin temel taşıdır 🧱


// Yetkisiz erişim örneği
Route::get('/profile', function () {
    return auth()->user()->profile;
})->middleware('auth:api');


2. Laravel Sanctum (API Token) 🏆

Kurulum

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"


Token Oluşturma

$token = $user->createToken('api-access', ['posts:read'])->plainTextToken;


Token ile Kimlik Doğrulama

GET /api/user
Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789


3. Laravel Passport (OAuth2) 🌐

Kurulum

composer require laravel/passport
php artisan passport:install


OAuth Route'ları

Route::post('/oauth/token', '\Laravel\Passport\Http\Controllers\AccessTokenController@issueToken');


OAuth Kullanımı

POST /oauth/token
grant_type=password&client_id=1&client_secret=...&username=user@example.com&password=...


4. JWT Authentication (JSON Web Token) 🔐

Kurulum

composer require tymon/jwt-auth


Token Üretme

$token = auth('api')->attempt(['email' => $email, 'password' => $password]);


Token Doğrulama

try {
    $user = auth('api')->user();
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
    return response()->json(['error' => 'Token expired'], 401);
}


5. Kimlik Doğrulama Yöntemleri Karşılaştırması 📊

YöntemKarmaşıklıkKullanım AlanıÖzelliklerSanctum⭐⭐SPA + Mobil + APIBasit token yönetimiPassport⭐⭐⭐⭐Üçüncü Parti API ErişimiTam OAuth2 implementasyonuJWT⭐⭐⭐MikroservislerStateless, çoklu dil desteği


6. Güvenlik Best Practices 🛡️

  1. HTTPS zorunlu tutun
  2. Token sürelerini kısa tutun (Refresh token kullanın)
  3. Rate limiting uygulayın
  4. Sensitive datayı filtreleyin
  5. CORS ayarlarını doğru yapılandırın


// Sanctum token süresi ayarı
Sanctum::authenticateAccessTokensUsing(function ($accessToken, $isValid) {
    return $isValid && $accessToken->created_at->gt(now()->subDays(7));
});


7. Pratik Kullanım Örnekleri 🛠️

Sanctum ile SPA Kimlik Doğrulama

// app/Http/Kernel.php
'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    // ...
]


Passport ile API Gateway

// OAuth scope kontrolü
Route::get('/orders', function () {
    if (auth()->user()->tokenCan('orders:read')) {
        return Order::all();
    }
    abort(403);
});


Sağlam API Güvenliği 🔒

Doğru kimlik doğrulama yöntemiyle:

  • Kullanıcı verilerini koruyun 🛡️
  • API erişimini kontrol edin 🚦
  • Güvenlik açıklarını önleyin 🚨


Hangi kimlik doğrulama yöntemini kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de API Testing: Postman ve PHPUnit ile Test Etme] - API'nizi nasıl test edeceğinizi öğrenin!

#Laravel #APISecurity #Authentication #WebDevelopment #Backend 🔐

1 + 1 =