Sarıkaya Dev Logo

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

Mahmut Sarıkaya 2 min read 990 Views 0
Laravel'de API Authentication: Token ve OAuth ile Güvenli Erişim


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 🔐

Tags: #Laravel #API Authentication #Laravel Token Authentication #Laravel OAuth #Laravel Sanctum #Laravel Passport #Laravel API Güvenliği #Laravel JWT #Laravel Bearer Token #Laravel Access Token #Laravel Refresh Token #Laravel Authentication Middleware #Laravel API Key #Laravel Personal Access Token #Laravel OAuth2 #Laravel Multi-Auth #Laravel User Authentication #Laravel API Authorization #Laravel Role-Based Access Control #Laravel CSRF Protection #Laravel Secure API Endpoints #Laravel Rate Limiting #Laravel API Token Expiration #Laravel Two-Factor Authentication #Laravel API Best Practices #Laravel 12
Share:
M

Written by

Mahmut Sarıkaya

Software Developer

Comments

No comments yet. Be the first to share your thoughts!

Leave a Comment

2 + 6 =