Ce didacticiel démontre la construction d'un serveur OAuth2 robuste dans une application Laravel à l'aide de la bibliothèque Laravel Passport. Nous couvrirons la configuration du serveur et fournirons un exemple pratique de consommation d'API OAuth2. Les connaissances de base OAuth2 sont supposées. Laravel Passport simplifie considérablement le processus.
Le tutoriel est divisé en deux parties: installation et configuration de la bibliothèque, suivie par la création et la consommation de ressources d'échantillons.
Configuration du serveur
Cette section détaille l'installation et la configuration des composants nécessaires pour que le passeport fonctionne avec Laravel.
Installation de la bibliothèque des passeports Laravel
Utilisez Composer pour installer la bibliothèque:
composer require laravel/passport
Cela complète l'installation du passeport. Ensuite, nous l'intégrerons dans Laravel.
Activation du service de passeport
Laravel utilise des fournisseurs de services pour gérer les services d'application. Pour activer le passeport, vous devrez ajouter son fournisseur de services à config/app.php
. (Si vous ne savez pas avec les fournisseurs de services Laravel, reportez-vous à une ressource d'introduction pertinente.) Surtout, vous devez également enregistrer les routes du passeport (dans la méthode boot
de app/Providers/AuthServiceProvider.php
) et exécuter la commande php artisan passport:install
. Cette commande permet également la création du client. Créons un client de démonstration.
php artisan passport:client
La commande invite les détails: ID utilisateur, nom du client et URI rediriger. L'URI de redirection est l'endroit où l'utilisateur est redirigé après l'autorisation, transportant le code d'autorisation.
Supposons la sortie suivante:
<code>New client created successfully. Client ID: 3 Client secret: 1BT1tNj0Are27IGvIZe4lE2jRjtiVt0fmtaWBe8m</code>
Maintenant, nous pouvons tester les API OAuth2.
Pour cet exemple, nous créerons un répertoire oauth2_client
dans la racine du document (idéalement, cela résiderait sur l'application tierce consommant votre API).
créer oauth2_client / auth_redirection.php :
<?php $query = http_build_query([ 'client_id' => '3', 'redirect_uri' => 'http://localhost/oauth2_client/callback.php', 'response_type' => 'code', 'scope' => '', ]); header('Location: http://your-laravel-site-url/oauth/authorize?' . $query); ?>
N'oubliez pas de remplacer les espaces réservés comme client_id
et redirect_uri
par vos valeurs réelles.
Ensuite, créez oauth2_client / callback.php :
<?php if (isset($_REQUEST['code']) && $_REQUEST['code']) { $ch = curl_init(); $url = 'http://your-laravel-site-url/oauth/token'; $params = [ 'grant_type' => 'authorization_code', 'client_id' => '3', 'client_secret' => '1BT1tNj0Are27IGvIZe4lE2jRjtiVt0fmtaWBe8m', 'redirect_uri' => 'http://localhost/oauth2_client/callback.php', 'code' => $_REQUEST['code'], ]; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $params_string = ''; if (is_array($params) && count($params)) { foreach ($params as $key => $value) { $params_string .= $key . '=' . $value . '&'; } rtrim($params_string, '&'); curl_setopt($ch, CURLOPT_POST, count($params)); curl_setopt($ch, CURLOPT_POSTFIELDS, $params_string); } $result = curl_exec($ch); curl_close($ch); $response = json_decode($result); if (isset($response->access_token) && $response->access_token) { $access_token = $response->access_token; $ch = curl_init(); $url = 'http://your-laravel-site-url/api/user/get'; $header = ['Authorization: Bearer ' . $access_token]; $query = http_build_query(['uid' => '1']); curl_setopt($ch, CURLOPT_URL, $url . '?' . $query); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $result = curl_exec($ch); curl_close($ch); $response = json_decode($result); var_dump($result); } } ?>
Encore une fois, ajustez les URL et les informations d'identification au besoin.
flux de travail
L'utilisateur interagit avec deux applications: l'application Laravel (avec un compte existant) et le client tiers (Auth_redirection.php et callback.php).
http://localhost/oauth2_client/auth_redirection.php
. http://localhost/oauth2_client/callback.php
avec un code d'autorisation. callback.php
Échange le code pour un jeton d'accès. http://your-laravel-site-url/api/user/get
). Conclusion
Ce didacticiel a présenté la facilité d'utilisation de Laravel Passport dans la configuration d'un serveur OAuth2. Pour d'autres ressources de développement de Laravel, explorez le marché Envato.
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!