Maison  >  Article  >  cadre php  >  Développement Laravel : Comment implémenter l'authentification OAuth2 à l'aide de Laravel Passport ?

Développement Laravel : Comment implémenter l'authentification OAuth2 à l'aide de Laravel Passport ?

PHPz
PHPzoriginal
2023-06-15 12:24:07994parcourir

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模型中实现LaravelPassportHasApiTokenstrait。这个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

Implémentez le trait 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 Passport

Passport 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 API

Dé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ès

Avant 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!

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