Maison > développement back-end > tutoriel php > Développement PHP : implémentation du fournisseur de services OAuth2 à l'aide de Laravel Passport

Développement PHP : implémentation du fournisseur de services OAuth2 à l'aide de Laravel Passport

WBOY
Libérer: 2023-06-15 16:34:02
original
1577 Les gens l'ont consulté

Avec la popularité de l'Internet mobile, de plus en plus d'applications nécessitent que les utilisateurs s'authentifient et autorisent. OAuth2 est un framework d'authentification et d'autorisation populaire qui fournit aux applications un mécanisme standardisé pour implémenter ces fonctions. Laravel Passport est une implémentation de serveur OAuth2 facile à utiliser, sécurisée et prête à l'emploi qui fournit aux développeurs PHP des outils puissants pour créer l'authentification et l'autorisation OAuth2. Cet article expliquera comment utiliser Laravel Passport pour aider les développeurs PHP à mieux maîtriser le développement et l'application d'OAuth2.

  1. Introduction à Laravel Passport

Laravel Passport est une implémentation complète de serveur OAuth2 qui fournit des mécanismes d'authentification et d'autorisation faciles à installer, faciles à utiliser, faciles à étendre et fiables. Passport prend également en charge la signature et la vérification des jetons à l'aide de JSON Web Token (JWT) et fournit des capacités d'authentification ultra simples dans les API RESTful. Bien entendu, pour utiliser Laravel Passport pour développer un fournisseur de services OAuth2, nous devons d'abord maîtriser les connaissances théoriques et les connaissances de base associées sur OAuth2.

  1. OAuth2 Basics

OAuth2 est un cadre d'autorisation qui permet aux applications clientes d'accéder aux ressources autorisées par les utilisateurs à l'aide d'un serveur d'autorisation. OAuth2 est conçu comme un protocole basé sur HTTP qui permet aux utilisateurs d'autoriser des applications clientes tierces sur un serveur de ressources spécifique (tel qu'un serveur d'images ou un serveur de fichiers) à accéder à leurs informations stockées sur un serveur complètement différent. Les concepts de base du protocole OAuth2 incluent :

  • Client : une application qui doit accéder aux ressources (telles que les fichiers) sur le serveur de ressources.
  • Propriétaire de la ressource : un utilisateur qui peut autoriser les clients à accéder à leurs ressources.
  • Serveur d'autorisation : Le serveur d'autorisation authentifie le client, et si l'authentification réussit, émet un jeton d'accès au client.
  • Serveur de ressources : un serveur qui fournit des ressources protégées aux clients.

La spécification OAuth2 définit plusieurs types d'autorisation pour les développeurs. Ces types d'autorisation ont différents scénarios d'utilisation, tels que :

  • Code d'autorisation : le type d'autorisation le plus couramment utilisé, en utilisant le type d'autorisation du code d'autorisation, le client redirige l'utilisateur vers. le serveur d'autorisation, le serveur d'autorisation renverra un code d'autorisation et le client utilise le code d'autorisation pour demander un jeton d'accès.
  • Autorisation implicite : utilisée pour fournir un jeton d'accès au client du navigateur sans impliquer aucune transmission de code d'autorisation entre les serveurs, lorsque le jeton est placé directement dans la barre d'adresse du client du navigateur.
  • Autorisation client : utilisée pour autoriser le client à accéder au serveur de ressources. À l'heure actuelle, le serveur d'autorisation ne nécessite pas la participation de l'utilisateur.
  1. Laravel Passport Implementation OAuth2 Service Provider

Maintenant que nous avons compris les connaissances de base d'OAuth2 et une introduction à Laravel Passport, nous allons entrer dans la phase pratique et commencer à utiliser Laravel Passport pour implémenter le fournisseur de services OAuth2.

3.1. Installer Laravel Passport

Nous pouvons utiliser Composer pour installer Laravel Passport, ouvrir un terminal ou une invite de ligne de commande et saisir la commande suivante :

composer require laravel/passport
Copier après la connexion

Après avoir installé Laravel Passport, nous devons exécuter la commande pour migrer la base de données. :

php artisan migrate
Copier après la connexion

3.2. Configuration d'OAuth2

Dans Laravel Passport, demandez des jetons d'accès et obtenez des ressources via le "client". Avant de commencer, nous devons créer quelques clients. Nous pouvons utiliser la commande passeport:client de Passport pour créer un client :

php artisan passport:client
Copier après la connexion

Cette commande affichera l'ID client et la clé secrète créés dans la console, ainsi que le type de client (public ou confidentiel), qui est déterminé par le client. tapez Comment le jeton d’accès est généré.

Ensuite, configurez les gardes et les fournisseurs dans le fichier config/auth.php, avec passeport comme fournisseur d'autorisation :

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

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => AppModelsUser::class,
    ],
],
Copier après la connexion

Dans l'extrait de code ci-dessus, nous avons uniquement activé le "gatekeeper" nommé api, en le spécifiant comme Passport gatekeeper (' chauffeur' => 'passeport').

Une fois la configuration terminée, nous devons régénérer la clé Passport et exécuter la commande suivante :

php artisan passport:keys
Copier après la connexion

Après avoir exécuté cette commande, notre fournisseur de services OAuth2 a terminé la configuration, puis nous pouvons créer le jeton d'accès OAuth2 dans Laravel Card. .

3.3. Créer un jeton d'accès OAuth2

Lors de l'utilisation d'OAuth2, nous devons créer un jeton d'accès, qui est utilisé pour protéger les points de terminaison de l'API. Dans Laravel Passort, la génération du jeton d'accès OAuth2 est très simple. Nous pouvons échantillonner le code correspondant dans la route qui doit être protégée :

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware('auth:api');
Copier après la connexion

Cette route utilise le middleware auth:api, qui vérifiera le jeton d'accès et attribuera la demande à l'utilisateur.

  1. Test d'OAuth2 à l'aide de Postman

Lorsque le fournisseur de services OAuth2 et le jeton d'accès ont été configurés, nous pouvons tester via Postman. Nous pouvons utiliser Postman pour effectuer une requête GET afin de demander si l'utilisateur peut obtenir un jeton d'accès ou obtenir une route protégée avec le jeton d'accès. Dans Postman, les utilisateurs nécessitent une authentification pour accéder aux itinéraires protégés. Voici un exemple de code :

GET http://localhost:8000/api/user
Authorization : Bearer {access token}
Copier après la connexion

Dans cet exemple de code, nous envoyons une requête GET et nous authentifions à l'aide d'un jeton d'accès OAuth2. Si tout se passe bien, l'API renverra les informations protégées demandées.

  1. Résumé

Cet article a présenté l'utilisation de Laravel Passport. Vous maîtrisez désormais la méthode d'utilisation de la spécification OAuth2 et de Passport pour créer des mécanismes d'authentification et d'autorisation sécurisés et efficaces dans les applications PHP. L'utilisation de Passport est très utile pour les développeurs qui créent des API RESTful et des applications mobiles dans Laravel, car elle réduit la complexité du développement et augmente la vitesse de développement. J'espère que cet article pourra fournir une référence et de l'aide aux développeurs PHP.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal