Maison  >  Article  >  cadre php  >  Introduction détaillée au processus, à la configuration et à l'utilisation de Laravel Passport

Introduction détaillée au processus, à la configuration et à l'utilisation de Laravel Passport

PHPz
PHPzoriginal
2023-04-23 09:17:581349parcourir

Laravel Passport est une implémentation complète du serveur OAuth2 sous le framework Laravel. Il vous permet d'authentifier et d'autoriser les identités des utilisateurs via des API, afin que les services API soient accessibles sans exposer les informations d'identification de l'utilisateur, ce qui réduit considérablement la charge de travail du client et améliore la sécurité des applications. .

Le protocole OAuth2 derrière Laravel Passport est une norme industrielle, vous pouvez donc facilement intégrer l'authentification et l'autorisation OAuth2 dans d'autres langages et frameworks en utilisant les mêmes outils et processus. Ci-dessous, cet article présentera en détail le processus, la configuration et l'utilisation de Laravel Passport.

Installer Passport

Avant d'utiliser Laravel Passport, vous devez l'installer. Nous pouvons utiliser la commande composer pour installer Passport. La commande est la suivante :

composer require laravel/passport

Enable Passport

Une fois Laravel Passport installé, vous devez ajouter son fournisseur de services au tableau des fournisseurs dans le fichier config/app.php Open. le fichier et recherchez le tableau des fournisseurs et ajoutez le fournisseur de services de Laravel Passport, comme indiqué ci-dessous :

'providers' => [
    // Other Service Providers...
    Laravel\Passport\PassportServiceProvider::class,
],

Créer une table de base de données

Avant d'utiliser Laravel Passport, vous devez également créer la table de base de données requise par Passport. Vous pouvez utiliser l'artisan suivant. commande pour générer le fichier de migration :

php artisan migrate

Après avoir exécuté la commande ci-dessus, Laravel Passport créera plusieurs nouvelles tables dans votre base de données pour enregistrer des données telles que le client OAuth2, le jeton d'accès et le jeton d'actualisation.

Publiez le fichier de configuration

Exécutez la commande artisanale suivante pour publier le fichier de configuration Passport dans le répertoire de configuration du projet Laravel :

php artisan vendor:publish --tag=passport-config

Créez la clé

À ce stade, nous avons rempli les prérequis requis pour utiliser Laravel Passport condition. Ensuite, nous devons utiliser la commande artisanale suivante pour générer des clés de cryptage :

php artisan passport:keys

La commande ci-dessus générera des clés de cryptage pour signer des données telles que des cookies et des jetons d'accès.

Configurer Passport

Après avoir terminé les étapes ci-dessus, nous devons ensuite configurer Passport pour qu'il puisse s'exécuter. Dans le fichier de configuration config/auth.php, changez le pilote du pilote api en passeport et définissez les gardes et les fournisseurs comme suit :

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

Configurez les fournisseurs dans le même fichier comme suit :

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

Une fois configuré Une fois la documentation terminée terminée, l'authentification API est prête.

Créer une route

Ensuite, nous devons créer une route API dans le fichier de routage app/Http comme indiqué ci-dessous :

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

Dans l'exemple de routage ci-dessus, le middleware auth:api est défini pour vérifier si la demande provient d'Authentifié. s’ils ne sont pas des utilisateurs authentifiés, un code d’état 401 sera renvoyé en cas d’échec de la vérification.

Créer un client

Maintenant que nous avons terminé la configuration de l'application et les paramètres de routage de l'API, nous devons créer le client API. Dans Laravel Passport, la commande artisanale passeport:client est fournie pour créer un nouveau client OAuth2. Exécutez la commande comme indiqué ci-dessous :

php artisan passport:client --client

Après avoir exécuté la commande, nous devons entrer le nom du client et l'URI de redirection d'autorisation comme indiqué ci-dessous :

php artisan passport:client --client
Which user ID should the client be assigned to? [0]:
 > 1
What should we name the client?
 > Test
Where should we redirect the request after authorization?
 > http://example.com/callback

La commande ci-dessus créera un nouveau client OAuth2 à appliquer à cela. L'API du programme envoie le demande. Nous obtiendrons un identifiant client et un secret client à utiliser dans les requêtes API ultérieures.

Obtenir l'autorisation

Le client a été créé et a obtenu l'URI de redirection d'autorisation. Nous devons maintenant envoyer une demande à l'URI pour obtenir l'autorisation. Ensuite, Passport générera un jeton d'accès pour le client et le renverra au client. Utilisez l'URL indiquée ci-dessous, en remplaçant l'ID client et l'URI de redirection :

http://your-app.com/oauth/authorize?client_id={client-id}&redirect_uri={redirect-uri} &response_type=code&scope=

Après avoir entré l'URL, l'écran d'autorisation OAuth2 illustré ci-dessous s'affichera :

Introduction détaillée au processus, à la configuration et à lutilisation de Laravel Passport

Après avoir cliqué sur le bouton « Autoriser », l'autorisation se produit et la redirection vers l'URI de redirection se produit.

Obtenir un jeton d'accès

Maintenant, nous avons obtenu l'autorisation et le client a obtenu l'accès à l'API. Nous devons utiliser le code d'autorisation OAuth2 pour échanger la clé client contre le jeton d'accès. Nous pouvons utiliser la commande curl comme indiqué ci-dessous pour obtenir le jeton d'accès du serveur d'autorisation API :

$ curl -X POST -H "Accept: application/json" -F "client_id={client-id}" -F "client_secret={client-secret}" -F "grant_type=authorization_code" -F "code={code}" -F "redirect_uri={redirect-uri}" http://your-app.com/oauth/token

Après avoir exécuté la commande ci-dessus, vous obtiendrez l'objet JSON suivant qui contient des informations telles que access_token et rafraîchir_token :

{
    "token_type": "Bearer",
    "expires_in": 86400,
    "access_token": "{access-token}",
    "refresh_token": "{refresh-token}",
}

Utilisation du jeton d'accès pour les requêtes API

Maintenant que nous avons obtenu le jeton d'accès, nous pouvons utiliser le jeton d'accès pour effectuer des requêtes avec l'API. Nous devons ajouter l'en-tête Authorization à l'en-tête de requête API et configurer le schéma d'authentification Bearer pour utiliser le jeton d'accès comme contenu du jeton, comme indiqué ci-dessous :

$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'http://your-app.com/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$accessToken,
        'Accept' => 'application/json',
    ],
]);

Dans le code ci-dessus, nous utilisons le jeton d'accès comme Bearer TOKEN. Le format est soumis au serveur API pour vérification. Après succès, le résultat de la réponse API sera obtenu.

Résumé

Dans cet article, nous avons parlé du processus, de la configuration et de l'utilisation de Laravel Passport. Grâce à Laravel Passport, nous pouvons rapidement ajouter une authentification et une autorisation sécurisées aux applications API, tout en prenant en charge le protocole OAuth2 et en interopérant avec les applications qui implémentent l'autorisation OAuth2 dans d'autres langages et frameworks de programmation, permettant aux développeurs de créer rapidement une sécurité élevée, facile à utiliser. utiliser des applications API.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn