OAuth ist ein offener Standard, mit dem Drittanbieter Anwendungen sicher zugänglich sind. In OAuth2 ist die Autorisierungscode -Autorisierung der häufigste Autorisierungsart. In diesem Artikel wird ausführlich eingeführt, wie Sie einen Autorisierungscode -Autorisierungsserver in PHP erstellen, um eine sichere und zuverlässige Benutzergenehmigung zu erreichen.
Der Autorisierungsprozess für den Autorisierungscode lautet wie folgt:
Installieren Sie zunächst eine beliebte PHP OAuth2 -Bibliothek. Wir werden die Bibliothek "BSHAFFER/OAutH2-SERVER-PHP" verwenden, die über den Komponisten installiert werden kann:
Der Komponist benötigt BSHAFFER/OATH2-SERVER-PHP
Als nächstes erstellen wir eine Datei "index.php" in PHP als unseren Autorisierungscode -Autorisierungsserver:
<?php require_once 'vendor/autoload.php'; // erstellen PDO Instanzverbindungsdatenbank $dsn = "mysql:dbname=testdb;host=localhost"; $username = "root"; $password = ""; $pdo = new PDO($dsn, $username, $password); // erstellen OAuth2 Repository -Instanz $storage = new OAuth2StoragePdo($pdo); // erstellen授权服务器实例 $server = new OAuth2Server($storage); // Fügen Sie unterstützte Autorisierungstypen hinzu $server-> addgrantType (New OAuth2GrantTypeAuthorizationCode ($ Storage)); // Verarbeitungsautorisierungsanforderung $ request = oAuth2Request :: createFromGlobals (); $ response = new OAuth2Response (); if (! $ server-> validateAuthorizeRequest ($ request, $ response)) { $ response-> send (); sterben(); } // Autorisierungsseite anzeigen if (leer ($ _ post)) { Ausfahrt(' <form method="post"> <label for="username">Benutzername:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Passwort:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Autorisieren"> </form> '); } $ is_authorized = ($ _post ['userername'] == 'admin' && $ _post ['password'] == 'admin'); $ server-> handleauthorizeRequest ($ request, $ response, $ is_authorized); if ($ is_authorized) { $ response-> send (); } anders { Echo 'Autorisierung fehlgeschlagen'; }
Jetzt müssen wir eine Datenbanktabelle zum Speichern von Clientinformationen erstellen. Führen Sie die folgende SQL -Anweisung in MySQL aus:
Erstellen Sie Tabelle `oAuth_clients` ( `client_id` varchar (80) sammelt utf8_unicode_ci nicht null, `client_secret` varchar (80) collate utf8_unicode_ci nicht null, `redirect_uri` varchar (2000) sammelt UTF8_unicode_ci nicht null Standard '', `Grant_types` varchar (80) collate utf8_unicode_ci Standard Null, `scope` varchar (100) collate utf8_unicode_ci Standard Null, `user_id` varchar (80) sortiert utf8_unicode_ci Standard Null, Primärschlüssel (`client_id`) );
Besuchen Sie die folgende URL, um zu autorisieren:
http: //localhost/index.php? response_type = code & client_id = your_client_id & redirect_uri = your_redirect_uri & scope = scope
Geben Sie den Benutzernamen und das Kennwort auf der Autorisierungsseite ein (z. B. sind der Benutzername und das Kennwort sowohl "admin") und der Autorisierungscode wird zurückgegeben. Wenn die Authentifizierung des Benutzers erfolgreich ist, gibt der Server einen Autorisierungscode zurück.
Verwenden Sie über Curl oder andere HTTP -Clients den erhaltenen Autorisierungscode, um einen Zugriffs -Token anzufordern:
curl -x post -d "Grant_type = Autorisierung_Code & Code = Autorisierung_Code & client_id = your_client_id & client_secret = your_client_secret & redirect_uri = your_redirect_uri" http: //localhost/token.php.
Ersetzen Sie den Autorisierungscode, die Client -ID, den Client -Schlüssel und den URI durch den tatsächlichen Wert um. Wenn die Anfrage erfolgreich ist, erhalten Sie ein Zugangs -Token.
Das obige oben ist der vollständige Prozess, wie ein Autorisierungscode -Autorisierungsserver in PHP erstellt wird. Durch die Verwendung von OAUTH2 können Sie einen sicheren Autorisierungsprozess für Ihre Anwendung implementieren und die Datenschutz des Benutzers schützen.