Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung von PHP zur Implementierung der Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2

Verwendung von PHP zur Implementierung der Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2

WBOY
WBOYOriginal
2023-08-08 10:53:051102Durchsuche

Verwendung von PHP zur Implementierung der Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2

Verwenden Sie PHP, um die Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2 zu implementieren.

OAuth2 ist ein offenes Standardprotokoll, mit dem Anwendungen von Drittanbietern autorisiert werden, zur Authentifizierung auf Benutzerressourcen zuzugreifen. Es ist einfach, sicher und flexibel und wird häufig in verschiedenen Webanwendungen und mobilen Anwendungen eingesetzt.

In PHP können wir die OAuth2-Autorisierung und -Authentifizierung mithilfe von Bibliotheken von Drittanbietern implementieren. In diesem Artikel wird Beispielcode kombiniert, um die Verwendung von PHP zur Implementierung der Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2 vorzustellen.

Zuerst müssen wir Composer verwenden, um eine OAuth2-PHP-Bibliothek zu installieren. Führen Sie den folgenden Befehl in der Befehlszeile aus:

composer require league/oauth2-client

Nach Abschluss der Installation können wir den folgenden Codeausschnitt verwenden, um den OAuth2-Autorisierungsprozess zu implementieren.

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取授权地址
$authorizationUrl = $provider->getAuthorizationUrl();

// 将授权地址重定向到用户
header('Location: ' . $authorizationUrl);

Im obigen Code erstellen wir zunächst ein GenericProvider-Objekt und müssen relevante Konfigurationsinformationen übergeben. Darunter sind clientId und clientSecret die vom Autorisierungsserver bereitgestellte Anwendungs-ID und redirectUri ist die Weiterleitungsadresse, nachdem der Benutzer die Autorisierung abgeschlossen hat ; urlAuthorize ist die Autorisierungsadresse des Autorisierungsservers; urlAccessToken ist die Token-Erfassungsadresse des Autorisierungsservers; urlResourceOwnerDetails ist die Schnittstellenadresse zum Abrufen Benutzerinformationen. GenericProvider对象,需要传入相关的配置信息。其中,clientIdclientSecret是由授权服务器提供的应用程序标识和秘钥;redirectUri是用户完成授权后重定向的地址;urlAuthorize是授权服务器的授权地址;urlAccessToken是授权服务器的令牌获取地址;urlResourceOwnerDetails是获取用户信息的接口地址。

接下来,我们使用getAuthorizationUrl方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri地址。

我们还需要创建一个回调页面callback.php来处理用户完成授权后的重定向。以下是callback.php的代码示例:

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取令牌
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// 使用令牌获取用户信息
$user = $provider->getResourceOwner($token);

// 输出用户信息
echo 'User ID: ' . $user->getId() . '<br>';
echo 'User Name: ' . $user->getName() . '<br>';

callback.php中,我们通过getAccessToken方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner

Als nächstes verwenden wir die Methode getAuthorizationUrl, um die Autorisierungsadresse abzurufen und sie dann an den Benutzer weiterzuleiten. Der Benutzer meldet sich über die Autorisierungsadresse an und autorisiert ihn. Anschließend wird er zurück an die von uns bereitgestellte redirectUri-Adresse weitergeleitet.

Wir müssen außerdem eine Rückrufseite callback.php erstellen, um die Umleitung zu verarbeiten, nachdem der Benutzer die Autorisierung abgeschlossen hat. Das Folgende ist ein Codebeispiel von callback.php:

rrreee

In callback.php erhalten wir das Token, das nach der Benutzerautorisierung über den getAccessTokenzurückgegeben wird >-Methoden-Token und verwenden Sie dann dieses Token, um die Informationen des Benutzers über die Methode getResourceOwner abzurufen.

Das Obige ist der Beispielcode für die Verwendung von PHP zur Implementierung der Autorisierung und Authentifizierung durch Dritte basierend auf OAuth2. Mithilfe dieser Codes können wir die Benutzerautorisierungsanmeldung implementieren und autorisierte Benutzerinformationen erhalten.
  1. Es ist zu beachten, dass dies nur ein einfaches Beispiel für OAuth2 ist. Tatsächliche Anwendungen müssen auch Fehler und Ausnahmen sowie weitere Autorisierungsprozesse verarbeiten. Entwickler sollten entsprechend den spezifischen Anforderungen entsprechende Änderungen und Erweiterungen vornehmen.
Referenz: 🎜🎜🎜League OAuth2-Client: https://github.com/thephpleague/oauth2-client🎜🎜

Das obige ist der detaillierte Inhalt vonVerwendung von PHP zur Implementierung der Autorisierung und Authentifizierung von Drittanbietern basierend auf OAuth2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn