OAuth-Client für PHP: Vollständige Anleitung zur Integration
In der modernen Webentwicklung ist OAuth (Open Authorization) zum De-facto-Standard für die Anmeldung über Drittanbieterdienste geworden. Der OAuth-Client für PHP ermöglicht es Ihren Benutzern, sich auf Ihrer Website über Google-, GitHub-, VKontakte-Konten und andere Anbieter anzumelden, ohne eine separate Registrierung durchführen zu müssen.
In diesem Artikel betrachten wir die beliebte PHP-Bibliothek League OAuth2 Client, die eine einheitliche Schnittstelle für die Arbeit mit verschiedenen OAuth2-Anbietern bietet.
Was ist OAuth2 und warum wird es benötigt?
OAuth2 ist ein Autorisierungsprotokoll, das es ermöglicht, den Zugriff auf Benutzerressourcen zu delegieren. Anstatt Passwörter von Drittanbieterdiensten zu speichern, erhalten Sie ein temporäres Zugriffstoken. Die wichtigsten Vorteile:
- Sicherheit — Benutzerpasswörter werden nicht an Ihre Anwendung übermittelt
- Komfort — Benutzer melden sich mit einem Klick an
- Vertrauen — geringeres Risiko von Datenlecks
- Zusätzliche Daten — E-Mail, Name, Avatar und andere Informationen können abgerufen werden
Installation der Bibliothek League OAuth2 Client
Für die Arbeit mit OAuth2 in PHP wird die Verwendung des offiziellen Pakets league/oauth2-client empfohlen. Die Installation erfolgt über Composer:
composer require league/oauth2-clientFür bestimmte Anbieter sind zusätzliche Pakete erforderlich. Zum Beispiel:
composer require league/oauth2-google # Googlecomposer require league/oauth2-github # GitHubcomposer require digitalcloud/oauth2-vk # VK (inoffiziell)Basisarchitektur des OAuth2-Clients
Jeder OAuth2-Client arbeitet nach folgendem Schema:
- Der Benutzer klickt auf die Schaltfläche „Mit Anbieter anmelden“
- Ihre Anwendung leitet den Benutzer zur Autorisierungsseite des Anbieters weiter
- Der Benutzer bestätigt den Zugriff
- Der Anbieter gibt einen Autorisierungscode an Ihre callback-URI zurück
- Ihre Anwendung tauscht den Code gegen ein Zugriffstoken ein
- Mit dem Token rufen Sie Benutzerdaten aus der API des Anbieters ab
Beispiel für die Integration mit Google
Betrachten wir ein vollständiges Arbeitsbeispiel für die Autorisierung über Google. Erstellen Sie zunächst ein Projekt in der Google Cloud Console und erhalten Sie eine Client-ID und ein Client-Geheimnis.
Dateistruktur:
config.php— Anwendungseinstellungenlogin.php— Anmeldeseitecallback.php— Verarbeitung der Antwort von Google
config.php
<?php// OAuth-Einstellungen für Googledefine('GOOGLE_CLIENT_ID', 'ihre_client_id.apps.googleusercontent.com');define('GOOGLE_CLIENT_SECRET', 'ihr_client_secret');define('GOOGLE_REDIRECT_URI', 'https://ihre-website.de/callback.php');
// Bibliothek einbindenrequire_once 'vendor/autoload.php';
use League\\OAuth2\\Client\\Provider\\Google;
// Anbieter erstellen$provider = new Google([ 'clientId' => GOOGLE_CLIENT_ID, 'clientSecret' => GOOGLE_CLIENT_SECRET, 'redirectUri' => GOOGLE_REDIRECT_URI,]);?>login.php
<?phprequire_once 'config.php';
// URL für die Autorisierung generieren$authUrl = $provider->getAuthorizationUrl([ 'scope' => ['email', 'profile'], // E-Mail und Profil anfordern]);
// State zum Schutz vor CSRF-Angriffen speichern$_SESSION['oauth2state'] = $provider->getState();
// Benutzer weiterleitenheader('Location: ' . $authUrl);exit;?>
<!-- Alternativ: Schaltfläche in HTML --><a href="<?= htmlspecialchars($authUrl) ?>">Mit Google anmelden</a>callback
Auch in der Bibliothek
Markdown-Verarbeitung in TypeScript: Bibliotheken, Parser und praktische Anwendung
remeda für TypeScript: Komplettguide mit Beispielen
Redis-Client für TypeScript: ioredis und redis (node-redis)
Chucker für Kotlin: Komplettguide mit Beispielen
E-Mail-Versand mit PHP: PHPMailer, mail() und Alternativen