Laravel Passport PHP: पूर्ण गाइड OAuth2 सर्वर के साथ उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Laravel Passport PHP: OAuth2 सर्वर के लिए पूर्ण गाइड

1. यह क्या है और इसकी आवश्यकता क्यों है

Laravel Passport, Laravel फ्रेमवर्क (PHP) के लिए OAuth2 सर्वर का एक पूर्ण कार्यान्वयन है। यह API प्रमाणीकरण बनाने के लिए तैयार टूल्स का एक सेट प्रदान करता है, जिससे डेवलपर्स मानक एक्सेस टोकन (access tokens) और रिफ्रेश टोकन (refresh tokens) का उपयोग करके अपने RESTful API को जल्दी से सुरक्षित कर सकते हैं। यह लाइब्रेरी शक्तिशाली League OAuth2 Server पैकेज पर आधारित है, जिसे Laravel इकोसिस्टम के अनुकूल बनाया गया है, जिसमें माइग्रेशन, फेसेड, Artisan कमांड और Eloquent मॉडल शामिल हैं।

Passport का मुख्य उद्देश्य डेवलपर को टोकन जनरेशन, सत्यापन और भंडारण की जटिल लॉजिक को मैन्युअल रूप से लिखने से मुक्त करना है। इसके बजाय, आपको टोकन जारी करने के लिए तैयार रूट्स (ग्रांट टाइप्स के माध्यम से), रूट्स को सुरक्षित करने के लिए मिडलवेयर, और क्लाइंट्स (एप्लिकेशन) और टोकन प्रबंधित करने के लिए सुविधाजनक तरीके मिलते हैं। Passport Single Page Applications (SPA), मोबाइल ऐप्स और सर्वर-साइड क्लाइंट्स के लिए आदर्श है, जिन्हें आपके API तक सुरक्षित पहुंच की आवश्यकता है।

खुद का समाधान लिखने के बजाय Passport का उपयोग क्यों करें? पहला, सुरक्षा: लाइब्रेरी OAuth2 विनिर्देश की सभी आवश्यकताओं को लागू करती है, जिसमें CSRF से सुरक्षा, स्कोप का सही प्रबंधन और PKCE (Proof Key for Code Exchange) शामिल है। दूसरा, विकास की गति: आपको तैयार माइग्रेशन, मॉडल और कंट्रोलर मिलते हैं। तीसरा, लचीलापन: Passport सभी मुख्य ग्रांट टाइप्स (authorization code, client credentials, password grant, personal access tokens) का समर्थन करता है और विशिष्ट आवश्यकताओं के लिए आसानी से विस्तार योग्य है।

2. इंस्टॉलेशन (स्थापना)

Laravel Passport की स्थापना Composer के माध्यम से की जाती है, जो PHP के लिए मानक पैकेज मैनेजर है। अपने Laravel प्रोजेक्ट की रूट डायरेक्टरी में निम्नलिखित कमांड चलाएँ:

composer require laravel/passport

पैकेज स्थापित करने के बाद, माइग्रेशन चलाना और कॉन्फ़िगरेशन प्रकाशित करना आवश्यक है। Passport अपनी स्वयं की माइग्रेशन प्रणाली का उपयोग करता है, जो क्लाइंट, टोकन, प्राधिकरण कोड और व्यक्तिगत टोकन के भंडारण के लिए टेबल बनाती है:

php artisan migrate

फिर passport:install कमांड चलाएँ, जो एन्क्रिप्शन कुंजियाँ और व्यक्तिगत टोकन तथा password grant के लिए क्लाइंट बनाएगा:

php artisan passport:install

कमांड चलाने के बाद, आप कंसोल में दो client_id और client_secret देखेंगे। पहला व्यक्तिगत टोकन (Personal Access Client) के लिए है, दूसरा password grant (Password Grant Client) के लिए है। इन्हें .env फ़ाइल में सहेजें:

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=1
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=your-secret-here
PASSPORT_PASSWORD_GRANT_CLIENT_ID=2
PASSPORT_PASSWORD_GRANT_CLIENT_SECRET=your-secret-here

इसके बाद, User मॉडल (app/Models/User.php) में Laravel\Passport\HasApiTokens ट्रेट जोड़ें:

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

config/auth.php फ़ाइल में, प्रमाणीकरण ड्राइवर को passport में बदलें:

'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

अंत में, app/Providers/AuthServiceProvider.php फ़ाइल में boot() विधि में Passport::routes() का कॉल जोड़ें:

<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;

class AuthServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
    }
}

अनुशंसाएँ