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

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

WBOY
WBOYoriginal
2023-06-15 20:35:241099parcourir

Avec le développement rapide de la technologie mobile et du cloud computing, de nombreuses entreprises ont développé leurs propres services API et les ont intégrés à leur cœur de métier. Au cours de ce processus, il devient très important de protéger les données API et de garantir que seuls les utilisateurs autorisés peuvent accéder à ces données API. L’authentification API devient donc un sujet important. Dans Laravel et Lumen, l'authentification API peut être implémentée à l'aide de Laravel Passport.

Laravel Passport est un système d'authentification API basé sur la norme OAuth2. Il fournit un moyen simple de créer une authentification API et prend en charge plusieurs clients et méthodes d'autorisation. Dans cet article, nous expliquerons comment implémenter l'authentification API à l'aide de Laravel Passport et Lumen.

Installation et configuration de Laravel Passport

Tout d'abord, nous devons installer Laravel Passport dans le projet Laravel. Installez à l'aide de la commande suivante :

composer require laravel/passport

Après avoir terminé l'installation, nous devons exécuter la commande suivante pour effectuer les migrations nécessaires :

php artisan migrate

php artisan passport:install

La commande passport:install ci-dessus créera le client et les clés pour vérification d'identité. Nous devons également enregistrer la route d'authentification à l'aide de la méthode Passport::routes() fournie par Laravel Passport dans le fournisseur de services de démarrage : passport:install命令将创建客户端和密钥,以便进行身份验证。我们还需要在启动服务提供者中使用Laravel Passport提供的Passport::routes()方法来注册身份验证路由:

// app/Providers/AuthServiceProvider.php

use LaravelPassportPassport;

// ...

public function boot() 
{
    // ...
    
    Passport::routes();
}

这将注册Laravel Passport提供的路由,以便我们可以使用它来进行身份验证。同时,我们还需要在config/auth.php配置文件中选择passport驱动:

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

Lumen中使用Laravel Passport

如果我们的项目是使用Lumen框架创建的,那么我们可以使用Laravel Passport的Lumen版本,它提供了与Lumen兼容的方式。我们可以使用以下命令安装Laravel Passport:

composer require dusterio/lumen-passport

安装完成后,我们需要在bootstrap/app.php文件中添加以下两行代码来注册Lumen Passport的服务提供者:

$app->register(DusterioLumenPassportPassportServiceProvider::class);
$app->configure('auth');

在完成注册后,我们需要注册路由和中间件。我们可以在app/Http/routes.php文件中添加以下代码来注册Lumen Passport提供的路由:

$app->group(['middleware' => ['api']], function ($app) {
    DusterioLumenPassportLumenPassport::routes($app, ['prefix' => 'auth']);
});

以上代码中,prefix选项指定了路由前缀,middleware指定了使用的中间件。

接下来,我们需要添加Lumen Passport提供的中间件。在bootstrap/app.php文件中,添加以下代码来注册中间件:

$app->middleware([
    // ...
    DusterioLumenPassportHttpMiddlewareAddCustomHeaders::class,
]);

注册完毕后,我们就完成了Lumen中使用Laravel Passport的配置工作。

使用密码授权方式进行身份验证

一旦我们完成了Laravel Passport的配置,我们就可以使用密码授权方式来进行身份验证。在这种授权方式下,客户端需要使用客户端ID和秘钥来请求访问令牌,然后使用该访问令牌来请求受保护的API资源。

我们可以使用以下代码来请求访问令牌:

$postData = [
    'grant_type' => 'password',
    'client_id' => '{client-id}',
    'client_secret' => '{client-secret}',
    'username' => '{username}',
    'password' => '{password}',
    'scope' => '',
];

$ch = curl_init('http://api.example.com/oauth/token');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$accessToken = json_decode($response)->access_token;

在以上代码中,我们使用了curl库来向我们的API服务请求访问令牌。请注意,{client-id}{client-secret}需要替换为真实的客户端ID和秘钥,{username}{password}

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
])->get('http://api.example.com/api/user');

Cela enregistrera la route fournie par Laravel Passport afin que nous puissions l'utiliser pour l'authentification. En parallèle, nous devons également sélectionner le pilote passport dans le fichier de configuration config/auth.php :

rrreee

Utilisation de Laravel Passport dans Lumen

Si notre projet est créé à l'aide du framework Lumen, nous pouvons alors utiliser la version Lumen de Laravel Passport, qui fournit un moyen compatible avec Lumen. Nous pouvons installer Laravel Passport à l'aide de la commande suivante :

rrreee

Une fois l'installation terminée, nous devons ajouter les deux lignes de code suivantes dans le fichier bootstrap/app.php pour enregistrer le fournisseur de services de Lumen Passport :

rrreee

Après pour terminer l'enregistrement, nous avons besoin d'enregistrer les itinéraires et le middleware. Nous pouvons ajouter le code suivant au fichier app/Http/routes.php pour enregistrer les itinéraires fournis par Lumen Passport : 🎜rrreee🎜Dans le code ci-dessus, l'option prefix spécifie le préfixe de l'itinéraire, middleware code> spécifie le middleware utilisé. 🎜🎜Ensuite, nous devons ajouter le middleware fourni par Lumen Passport. Dans le fichier bootstrap/app.php, ajoutez le code suivant pour enregistrer le middleware : 🎜rrreee🎜Une fois l'enregistrement terminé, nous avons terminé la configuration de l'utilisation de Laravel Passport dans Lumen. 🎜🎜Utilisation de l'autorisation par mot de passe pour l'authentification🎜🎜Une fois que nous avons terminé la configuration de Laravel Passport, nous pouvons utiliser l'autorisation par mot de passe pour l'authentification. Dans cette méthode d'autorisation, le client doit utiliser l'ID client et la clé secrète pour demander un jeton d'accès, puis utiliser le jeton d'accès pour demander des ressources API protégées. 🎜🎜 Nous pouvons utiliser le code suivant pour demander le jeton d'accès : 🎜rrreee🎜 Dans le code ci-dessus, nous avons utilisé la bibliothèque curl pour demander le jeton d'accès à notre service API. Veuillez noter que <code>{client-id} et {client-secret} doivent être remplacés par le véritable identifiant client et le secret, {username} et {password} doivent être remplacés par de véritables informations d'identification d'utilisateur. 🎜🎜Une fois que nous avons obtenu le jeton d'accès, nous pouvons l'utiliser pour accéder à la ressource API protégée. Lors de l'accès à l'API, nous devons mettre le jeton d'accès dans l'en-tête Authorization. Vous pouvez le faire dans Laravel en utilisant le code suivant : 🎜rrreee🎜 Dans le code ci-dessus, nous avons utilisé le client HTTP de Laravel pour accéder à l'API. Lorsque le client fait une demande, nous plaçons le jeton d'accès dans l'en-tête Authorization afin que le service API puisse valider le jeton et renvoyer la ressource protégée. 🎜🎜Conclusion🎜🎜En utilisant Laravel Passport et Lumen, nous pouvons ajouter des capacités d'authentification fortes à nos services API. Lors de la mise en œuvre de l'authentification API, nous devons comprendre le protocole d'autorisation OAuth2 et sa méthode d'autorisation. Lors de l'utilisation de l'autorisation par mot de passe, le client doit utiliser l'ID client et la clé secrète pour demander un jeton d'accès. Une fois que nous avons obtenu le jeton d'accès, nous pouvons l'utiliser pour accéder aux ressources API protégées. 🎜

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