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
Libérer: 2025-03-05 11:32:11
original
517 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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>
Copier après la connexion

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);
?>
Copier après la connexion

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);
    }
}
?>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal