Maison >développement back-end >tutoriel php >Configurez un serveur OAuth2 en utilisant Passport dans Laravel

Configurez un serveur OAuth2 en utilisant Passport dans Laravel

Lisa Kudrow
Lisa Kudroworiginal
2025-03-05 11:32:11525parcourir

Set Up an OAuth2 Server Using Passport in Laravel

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).

  1. L'utilisateur accède à http://localhost/oauth2_client/auth_redirection.php.
  2. Cela redirige vers la page d'autorisation de l'application Laravel.
  3. Après la connexion et l'autorisation, l'utilisateur est redirigé vers http://localhost/oauth2_client/callback.php avec un code d'autorisation.
  4. callback.php Échange le code pour un jeton d'accès.
  5. Le jeton d'accès est utilisé pour passer des appels API (par exemple, à 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!

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