Laravel Passport ile API Authentication (Doğrulama)

· PHP ·

Laravel Passport API Authentication

Yazdığınız API'ların bazı zamanlar güvensiz olduğunu, bu sistemde kullanıcı girişi olsa, ama nasıl yaparım diye düşündüğünüz olmuştur. Normal şartlarda bu işi JWT token sistemi implemente ederek yapabiliyoruz ancak bu sistemi sıfırdan oluşturmak uzun zaman alıyor. Laravel hemen burada da imdadımıza yetişiyor :)

 

JWT Nedir?

JWT'nin açılımı JSON Web Token'dir. Bu tokeni kullanarak API sistemlerinizi kullanıcı bazlı ayrıştırabilir, güvenlik önlemi olarak token sahibi olmayan kullanıcıların girişine izin vermeyebilirsiniz. Çalışma mantığından bahsedecek olursak aşağıdaki resim üzerinden ilerleyelim.

JWT Json Web Token

İlk önce sisteme login olmak için post atarsınız. Gönderdiğiniz veriler doğruysa server size tokeninizi döndürür. Ardından aldığınız tokeni diğer attığınız sorgularda Authorization (doğrulama) headerine koyar ve sorgu atarsanız client her seferinde tokeninizi kontrol eder ve doğruysa size yanıtı gönderir. Sistem basitçe bu şekilde işlemektedir ancak her clientin public ve secret keyleri vardır. JWT tokenlarının güvenliği buna göre sağlanmaktadır. Bu sayede dışarıdan tokenlarınızı üretip sisteminize sorgu atamazlar.

 

Laravel Passport nasıl kurulur?

Laravel projenizin hali hazırda oluşturulduğunu varsayarak anlatmaya devam edeceğim. 

  • İlk önce Passport paketini kuralım:
    composer require laravel/passport

  • Ardından .env dosyanızı düzenleyip php artisan migrate komutunu çalıştırın.

  • php artisan passport:install komutunu girelim ve keylerimiz oluşturulsun. Bu keyleri bir yere not alınız ihtiyacınız olacak.

  • Ardından giriş yapmak için kullandığınız modelinizin (standart olarak app/User.php) içerisine use Laravel\Passport\HasApiTokens; satırını ekleyiniz.



  • app/Providers/AuthServiceProvider.php içindeki boot metoduna \Laravel\Passport\Passport::routes(); satırını ekleyiniz.



  • config/auth.php dosyasında guards arrayi içerisindeki api => driver kısmını bulun ve driveri passport olarak değiştirin.



  • Sistem kurulumumuz başarıyla tamamlanmıştır.

Laravel Passport Nasıl Kullanılır?

  • Sisteminizde bir kullanıcı açın. Eğer nasıl yapacağınızı bilmiyorsanız php artisan tinker komutu ile oluşturabilirsiniz.
    App\User::create(['name' => 'Divergent', 'email' => 'me@dogukan.dev', 'password' => bcrypt('divergent')]);

  • Ardından aşağıdaki şekilde request bodynize form-datayı ekleyiniz.



    Client id size verilen grant keyin idsidir.
    Client secret size verilen grant keyin kendisidir.
    Grant type nasıl giriş yapmak istediğinizi seçtiğiniz alandır.
    Username ve password da token almak istediğiniz kullanıcının giriş bilgileridir.

  • Bu şekilde istek attıktan sonra size dönecek olan tokeni Postman ile aşağıdaki şekilde kullanabilirsiniz. Dönen tokenin türü Bearer Token olacaktır.




Okuduğunuz için teşekkür ederim. Sorularınızı yorum bölümünde belirtirseniz dönüş yapıyorum. İyi çalışmalar.