Développement Laravel : Comment implémenter l'authentification OAuth2 à l'aide de Laravel Passport ?
Laravel est un framework de développement Web PHP populaire qui facilite la création d'applications Web efficaces, évolutives et faciles à entretenir. Laravel possède de nombreuses fonctionnalités et composants, notamment Laravel Passport. Laravel Passport est une implémentation complète du serveur OAuth2 qui aide les développeurs à ajouter facilement une authentification sécurisée à leurs applications.
OAuth2 est une norme d'autorisation pour sécuriser les API et est une méthode sécurisée qui permet aux applications tierces d'accéder aux données des utilisateurs via des API. Il s'agit d'un standard ouvert utilisé par de nombreuses entreprises et organisations, telles que Facebook, Google, GitHub et Twitter. Laravel Passport est l'implémentation officielle du serveur OAuth2 du framework Laravel.
Ci-dessous, je vais vous montrer comment implémenter l'authentification OAuth2 à l'aide de Laravel Passport.
Étape 1 : Installer Laravel Passport
Utilisez Composer pour installer Laravel Passport. Entrez la commande suivante sur la ligne de commande :
composer require laravel/passport
Une fois l'installation terminée, exécutez la commande suivante pour publier les fichiers de configuration de Passport et les migrations de bases de données :
php artisan passport:install
Cette commande créera la clé de chiffrement ainsi que la table de base de données utilisée pour générer le jeton d'accès.
Étape 2 : Configurez Passport
Activez Passport dans votre application Laravel. Modifiez le fichier config/app.php
et ajoutez LaravelPassportPassportServiceProvider::class,
au tableau Provide. config/app.php
文件,将LaravelPassportPassportServiceProvider::class,
添加到Provide数组中。
在AppUser
模型中实现LaravelPassportHasApiTokens
trait。这个Trait将会给用户模型添加一些有关API用户的方法。
接下来,运行数据迁移以创建Passport使用的数据库表结构。
php artisan migrate
步骤3:在Passport中设置客户端
Passport在内部使用了OAuth2客户端-服务器模型。开发人员需要为其客户端创建唯一的“客户端ID”和“客户端密码”。在Laravel Passport中,要创建一个新的客户端,可以使用php artisan passport:client
命令。此命令将生成一个客户端ID和客户端密码,这些信息必须妥善存储,以便在API中使用。
php artisan passport:client --client
步骤4:定义API路由
在routes/api.php
文件中定义您的API路由。Passport包括一个名为auth:api
LaravelPassportHasApiTokens
dans le modèle AppUser
. Ce trait ajoutera certaines méthodes liées aux utilisateurs de l'API au modèle utilisateur. Ensuite, exécutez la migration des données pour créer la structure de table de base de données utilisée par Passport. Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });Étape 3 : Configurer le client dans PassportPassport utilise le modèle client-serveur OAuth2 en interne. Les développeurs doivent créer un « ID client » et un « Secret client » uniques pour leurs clients. Dans Laravel Passport, pour créer un nouveau client, vous pouvez utiliser la commande
php artisan passeport:client
. Cette commande générera un ID client et un secret client, qui doivent être correctement stockés pour être utilisés dans l'API. POST /oauth/token HTTP/1.1 Host: your-app.com Content-Type: application/x-www-form-urlencoded grant_type=password& client_id=client-id& client_secret=client-secret& username=user@your-app.com& password=user-password&Étape 4 : Définir les routes APIDéfinissez vos routes API dans le fichier
routes/api.php
. Passport inclut un middleware appelé auth:api
pour vérifier si la requête contient un jeton d'accès valide. Assurez-vous d'utiliser ce middleware pour protéger les routes protégées. Exemple : { "token_type": "Bearer", "expires_in": 31536000, "access_token": "eyJ0eXAiOiJKV1QiLCJ...", "refresh_token": "def5020086062f..." }Étape 5 : Générer un jeton d'accèsAvant de générer le jeton d'accès, l'utilisateur doit autoriser le client à accéder à ses données. Pour votre application API, vous devez afficher une interface d'autorisation aux utilisateurs sur le front-end, permettant aux utilisateurs d'autoriser le client à accéder à leurs données. Pour générer un jeton d'accès, envoyez une requête POST à votre application Laravel. La demande de jeton d'accès POST doit contenir l'ID client, le secret client, le nom d'utilisateur et le mot de passe. Si la demande aboutit, Passport renverra le jeton d'accès à l'application.
GET /api/user HTTP/1.1 Host: your-app.com Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ...La réponse du jeton d'accès ressemble à ceci :
rrreee
Notez que le passage de la commande passeport:install générera une clé de cryptage, qui sera utilisée pour générer le jeton d'accès. Étape 6 : Appelez l'API à l'aide du jeton d'accès 🎜🎜Enfin, utilisez le jeton d'accès pour appeler le point de terminaison de l'API protégé. Lors de la définition des en-têtes des requêtes, assurez-vous d'utiliser le protocole d'authentification du porteur et spécifiez l'en-tête « Autorisation » dans la requête. 🎜🎜Exemple : 🎜rrreee🎜Cela renverra une représentation JSON de l'utilisateur actuellement authentifié. 🎜🎜Conclusion : 🎜🎜Laravel Passport fournit un moyen pratique d'implémenter le flux d'authentification OAuth2. Il permet aux développeurs d'ajouter rapidement la fonctionnalité OAuth2 aux applications Laravel, rendant l'API plus sécurisée. Grâce aux étapes ci-dessus, vous pouvez apprendre à implémenter l'authentification OAuth2 dans Laravel à l'aide de Laravel Passport. 🎜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!