Dans les applications Web, l'authentification OAuth2 est devenue une norme populaire, permettant aux utilisateurs d'utiliser un serveur d'autorisation pour permettre à des applications tierces d'accéder et d'exploiter leurs ressources protégées. ThinkPHP6 est un framework PHP rapide et moderne adapté à tous les types d'applications. Il fournit des outils faciles à utiliser et puissants pour mettre en œuvre l'authentification OAuth2. Dans cet article, nous explorerons comment implémenter l'authentification OAuth2 à l'aide de ThinkPHP6.
Étape 1 : Installer ThinkPHP6
Pour commencer à utiliser ThinkPHP6, vous devez d'abord installer Composer dans votre environnement local. Ouvrez une fenêtre de terminal ou de ligne de commande dans le répertoire de votre projet et exécutez la commande suivante :
composer create-project topthink/think oauth2
Cela créera un nouveau répertoire appelé oauth2 dans le répertoire de votre projet et installera tous les composants ThinkPHP6 nécessaires dans ce répertoire.
Étape 2 : Installez PHP-JWT
L'authentification ThinkPHP6 OAuth2 repose sur PHP-JWT, qui est une bibliothèque PHP permettant de générer et de valider le jeton Web JSON (JWT). Avant cela, nous devons d'abord installer la bibliothèque PHP-JWT. Dans une fenêtre de terminal ou de ligne de commande, exécutez la commande suivante :
composer require firebase/php-jwt
Étape 3 : Créer un fournisseur de services OAuth2
Le fournisseur de services OAuth2 permet aux applications tierces d'accéder aux ressources protégées via une autorisation. Dans ThinkPHP6, le fournisseur de services OAuth2 est implémenté sur la base de la classe abstraite thinkoauthproviderAbstractProvider. Nous devons créer un fournisseur de services OAuth2 et implémenter les méthodes suivantes :
Voici un exemple simple de fournisseur de services OAuth2 :
<?php namespace appoauthprovider; use FirebaseJWTJWT; use thinkoauthproviderAbstractProvider; class SampleProvider extends AbstractProvider { public function getClientId(): string { return 'YOUR_CLIENT_ID'; } public function getClientSecret(): string { return 'YOUR_CLIENT_SECRET'; } public function getAuthorizationUrl(): string { $authUrl = 'https://your.auth.server/auth?' . 'client_id=' . $this->getClientId() . '&redirect_uri=' . urlencode($this->getRedirectUri()) . '&response_type=code'; return $authUrl; } public function validateAuthorizationCode(string $code): ?array { $payload = JWT::decode($code, $this->getClientSecret(), array('HS256')); // Check if payload is valid return $payload; } public function refreshToken(string $refreshToken): ?array { // Implement refresh token logic return null; } }
Étape 4 : Implémenter le middleware d'authentification OAuth2
Maintenant, nous devons l'implémenter dans l'application OAuth2 middleware d’authentification. Dans ThinkPHP6, le middleware est implémenté sur la base des classes abstraites thinkmiddlewareMiddleware et thinksessionSessionManager. Nous devons créer un middleware et implémenter la méthode suivante :
Ce qui suit est un exemple simple de middleware d'authentification OAuth2 :
<?php namespace appmiddleware; use appoauthproviderSampleProvider; use FirebaseJWTJWT; class OAuth2Middleware { public function handle( hinkRequest $request, Closure $next) { $provider = new SampleProvider(); // Check if access token exists $accessToken = $request->header('Authorization'); if (!$accessToken) { // Redirect to auth server $authUrl = $provider->getAuthorizationUrl(); return redirect($authUrl); } // Verify access token $jwtSecret = $provider->getClientSecret(); $verify = JWT::decode($accessToken, $jwtSecret, array('HS256')); // Check if token is valid if (!$verify) { return json(array( 'error' => 'Invalid token', )); } // Set user in session $session = hinkacadeSession::get('user'); $session['id'] = $verify['id']; hinkacadeSession::set('user', $session); // Go to next middleware return $next($request); } }
La logique d'implémentation du middleware ci-dessus suit :
Étape 5 : Enregistrez le middleware d'authentification OAuth2
Maintenant, nous devons enregistrer le middleware d'authentification OAuth2 en tant que middleware global dans l'application. Dans le fichier configmiddleware.php, ajoutez le code suivant :
<?php return [ 'oauth2' => ppmiddlewareOAuth2Middleware::class, ];
Maintenant, nous avons terminé toutes les étapes pour implémenter l'authentification OAuth2 à l'aide de ThinkPHP6. Vous pouvez utiliser le middleware d'authentification OAuth2 dans votre application pour protéger les routes ou les actions du contrôleur qui nécessitent un accès à des ressources autorisées. Avec le middleware d'authentification OAuth2, vous pouvez utiliser un mécanisme d'autorisation basé sur des jetons pour protéger les données utilisateur et les points de terminaison d'API sensibles. Profitez de la facilité d'utilisation et des performances puissantes fournies par ThinkPHP6 pour développer une application Web sécurisée et performante.
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!