Laravel Sanctum ve JWT (JSON Web Tokens)'nin Kullanım Alanları, Kurulumları ve Aralarındaki Farklar

Bir web uygulamasında uygulanın performansı kadar önemli bir diğer konuda uygulamanın güvenliğidir. Bu güvenlik laravel'in sunduğu ve kolaylıkla entegre edilebilen bazı yapılar ile sağlanabilir. Sanctum ve JWT bunlardandır.
Laravel Sanctum ve JWT (JSON Web Tokens)'nin Kullanım Alanları, Kurulumları ve Aralarındaki Farklar - bimakale.com | bimakale.com
07 Şubat 2024 Çarşamba - 01:36 (9 Ay önce)

Laravel Sanctum Nedir ve Nasıl Kullanılır?

Laravel Sanctum, Laravel uygulamalarında API yetkilendirme işlemlerini sağlamak için kullanılan bir pakettir. Kullanıcıların token tabanlı kimlik doğrulaması yapmalarını sağlar. İşte Laravel Sanctum'i kullanarak adımlar:

1. Laravel Projesi Oluşturma:

Öncelikle bir Laravel projesi oluşturmanız gerekmektedir. Composer kullanarak yeni bir proje oluşturabilirsiniz:

composer create-project --prefer-dist laravel/laravel sanctum_demo

2. Sanctum Kurulumu:

Laravel Sanctum'i projenize eklemek için Composer kullanabilirsiniz:

composer require laravel/sanctum

3. Sanctum Yapılandırması:

Sanctum paketini projenize ekledikten sonra, yapılandırma dosyasını yayınlamanız gerekir. Bunun için terminalde aşağıdaki komutu çalıştırın:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Bu komut, yapılandırma dosyasını projenize kopyalayacak ve config/sanctum.php yolunda oluşturacaktır.

4. Migration'lar:

Sanctum'un kullanması için gerekli olan tabloları veritabanınıza eklemeniz gerekmektedir. Bu adım için aşağıdaki migration'ı çalıştırabilirsiniz:

php artisan migrate

5. Middleware Ayarları:

Sanctum'u kullanmak için api middleware'ini routes/api.php dosyasına eklemelisiniz:

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

6. Token Oluşturma:

Token oluşturmak için Sanctum kullanıcı modelinizi bir örnek oluşturarak kullanabilirsiniz:

use App\Models\User;
use Illuminate\Support\Facades\Hash;

$user = User::create([
    'name' => 'Test User',
    'email' => '[email protected]',
    'password' => Hash::make('password'),
]);

$token = $user->createToken('token-name')->plainTextToken;

Bu kod, kullanıcı için bir token oluşturur ve bu token'i döndürür.

7. Token Kullanımı:

Oluşturulan token ile güvendeki rotaları çağırabilirsiniz:

curl -X GET http://your-app.test/api/user \
-H "Authorization: Bearer $TOKEN"

'$TOKEN'ı oluşturduğunuz token ile değiştirmelisiniz.

Bu adımları takip ederek Laravel Sanctum'u kullanmaya başlayabilirsiniz.

JWT Nedir ve Nasıl Kullanılır?

JSON Web Tokens (JWT), token tabanlı kimlik doğrulaması sağlamak için kullanılan bir standarttır. Laravel'de JWT kullanmak için tymon/jwt-auth gibi üçüncü taraf paketler kullanılabilir. Bu paket, JWT'leri oluşturmayı, doğrulamayı ve işlemeyi kolaylaştırır. İşte JWT-Auth paketini Laravel'de kullanmanın temel adımları:

1. Paketin Yüklenmesi:

Composer kullanarak tymon/jwt-auth paketini projeye ekleyin:

composer require tymon/jwt-auth

2. Servis Sağlayıcısının Eklenmesi:

config/app.php dosyasında, servis sağlayıcısını ekleyin:

'providers' => [
    // ...
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
],

3. JWT Servisini Yapılandırma:

Laravel'deki JWT paketini yapılandırmak için, terminalde aşağıdaki komutu çalıştırın:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

Bu komut, config/jwt.php dosyasını projenize kopyalayacaktır. Burada, token ömrü, algoritma ve diğer ayarları yapılandırabilirsiniz.

4. Kullanıcı Modelini Güncelleme:

Kullanıcı modelinizi (App\Models\User) JWTAuth ile uyumlu hale getirmek için, Tymon\JWTAuth\Contracts\JWTSubject arabirimini uygulayın ve gerekli yöntemleri tanımlayın:

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Tymon\JWTAuth\Contracts\JWTSubject;

class User extends Authenticatable implements JWTSubject
{
    // ...
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    public function getJWTCustomClaims()
    {
        return [];
    }
}

5. JWT'lerin Oluşturulması ve Doğrulanması:

JWT'leri oluşturmak ve doğrulamak için, JWTAuth facade'ini kullanabilirsiniz. Örneğin, kullanıcı giriş yaptığında bir token oluşturabilir ve bunu kullanarak yetkilendirme yapabilirsiniz.

use Tymon\JWTAuth\Facades\JWTAuth;

$token = JWTAuth::attempt(['email' => $email, 'password' => $password]);

if (!$token) {
    return response()->json(['error' => 'Unauthorized'], 401);
}

return response()->json(compact('token'));

Token'ı kullanarak yetkilendirme yapmak için, jwt.auth middleware'ini rotalarınıza ekleyebilirsiniz:

Route::middleware('jwt.auth')->get('user', function(Request $request) {
    return auth()->user();
});

JWT'leri kullanarak kimlik doğrulama yapmak oldukça esnektir ve birçok özelliği destekler. Ancak, güvenlik konusunda dikkatli olunmalıdır. Örneğin, token'ın güvenliği sağlanmalı, token'ın süresi sınırlanmalı ve yetkilendirme doğru bir şekilde yapılandırılmalıdır.

JWT (JSON Web Tokens) ile Senstum Arasındaki Farklar Nelerdir?

JWT (JSON Web Tokens) ve Laravel Sanctum (önceden Laravel Airlock olarak da bilinir), her ikisi de token tabanlı kimlik doğrulaması sağlayan araçlardır, ancak farklı yaklaşımları ve kullanım alanları vardır. İşte JWT ve Laravel Sanctum arasındaki temel farklar:

  1. JWT (JSON Web Tokens):
    • JWT, bir açık standarttır ve token tabanlı kimlik doğrulaması sağlamak için kullanılır.
    • JWT'ler, JSON formatında veriyi taşıyan ve bu verinin doğruluğunu doğrulayan token'lar olarak kullanılır.
    • JWT'ler, token'ın içerdiği bilgilerin şifrelenmesi nedeniyle veri depolama ve işleme konusunda daha bağımsızdır.
    • JWT, genellikle bağımsız bir kimlik doğrulama hizmeti olarak kullanılır ve genellikle oturum yönetimi ve kimlik doğrulaması gibi çeşitli platformlar ve hizmetler arasında kullanılabilir.
    • JWT, Laravel dahil olmak üzere çeşitli platformlarda kullanılabilir. Laravel'de JWT kullanmak için tymon/jwt-auth gibi üçüncü taraf paketler bulunmaktadır.
  2. Laravel Sanctum:
    • Laravel Sanctum, Laravel'in özel bir paketidir ve Laravel uygulamalarında API yetkilendirme işlemlerini sağlamak için kullanılır.
    • Sanctum, API'larınız için oturum tabanlı kimlik doğrulaması sağlar. Kullanıcılar, token'ları API rotalarına erişmek için oluşturur ve bu token'lar, Sanctum tarafından sağlanan middleware ile doğrulanır.
    • Sanctum, Laravel'in Oturum ve CSRF korumasını API'larınıza uyarlar ve kullanıcı kimlik doğrulaması için oturumları kullanır.
    • Sanctum, Laravel'in güçlü yetkilendirme ve kimlik doğrulama özelliklerinden yararlanır ve API tabanlı projeler için uygun bir seçenektir.
    • Sanctum, SPA'lar (Single Page Applications) veya mobil uygulamalar gibi istemci tarafı uygulamalarıyla entegrasyonu kolaylaştıran özelliklere sahiptir.

Kısacası, JWT, genel olarak token tabanlı kimlik doğrulaması için bir standart sunarken, Laravel Sanctum, özellikle Laravel API'ları için oturum tabanlı kimlik doğrulaması sağlamak için Laravel'in özel bir paketidir. Hangisinin kullanılacağı, projenin gereksinimlerine ve kimlik doğrulama yöntemi tercihlerine bağlı olacaktır.


  • Laravel
  • Web Yazılım
  • Yazılım



Yorumlar
Sende Yorumunu Ekle
Kullanıcı
0 karakter