PHP で OAuth 認証と認可を実装するにはどうすればよいですか?

王林
リリース: 2023-06-29 14:22:01
オリジナル
990 人が閲覧しました

PHP で OAuth 認証と認可を実装するにはどうすればよいですか?

OAuth は、サードパーティ アプリケーションがユーザー リソースにアクセスすることを承認するためのオープン スタンダードです。これにより、ユーザーはパスワードを共有せずに、サードパーティにリソースへのアクセスを許可できます。

PHP では、OAuth 認証と認可を実装するには次の手順が必要です。

最初の手順はアプリケーションを登録することです
OAuth の使用を開始する前に、まずアプリケーションを登録する必要があります。アプリケーションを作成し、クライアント ID と秘密キーを取得します。この情報はアプリケーションを認証するために使用され、API 呼び出しの資格情報として機能します。

2 番目のステップは、OAuth ライブラリを導入することです。
PHP には、使用できる既製の OAuth ライブラリが多数あります。より一般的に使用されるものとしては、PHPoAuthLib と League OAuth2 Client があります。ニーズに応じて適切なライブラリを選択し、プロジェクトに導入できます。

たとえば、PHPoAuthLib ライブラリを使用するには、composer を使用して以下をインストールできます。

composer require league/oauth2-client
ログイン後にコピー

3 番目のステップは、OAuth クライアントを構成することです。
OAuth ライブラリを導入した後、次のことを行う必要があります。 OAuth クライアントを構成します。これには、クライアント ID、キー、コールバック URL などの設定情報が含まれます。

PHPoAuthLib ライブラリを使用して、OAuth クライアントの例を作成します。

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://your-redirect-url',
    'urlAuthorize'            => 'http://authorization-url',
    'urlAccessToken'          => 'http://access-token-url',
    'urlResourceOwnerDetails' => 'http://resource-owner-details-url'
]);
ログイン後にコピー

実際の状況に応じて、上記のコードのパラメーター値を置き換えます。

4 番目のステップ、認可リンクの取得
OAuth クライアントを構成した後、それを使用して認可リンクを生成できます。ユーザーはリンクをクリックして認可し、アクセス トークンを取得します。

PHPoAuthLib ライブラリを使用して、認可リンクを取得するサンプル コードは次のとおりです。

$authorizationUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();

echo '<a href="' . $authorizationUrl . '">点击授权</a>';
ログイン後にコピー

生成された認可リンクをユーザーがクリックできるようにページに表示します。

5 番目のステップ、コールバックの処理
ユーザーが承認リンクをクリックすると、OAuth クライアントで設定したコールバック URL にリダイレクトされます。コールバック URL では、認証成功後のコールバック関数を処理する必要があります。

PHPoAuthLib ライブラリを使用した、コールバック処理のサンプル コードは次のとおりです。

session_start();

$state = isset($_GET['state']) ? $_GET['state'] : null;

if (!isset($_SESSION['oauth2state']) || $state != $_SESSION['oauth2state']) {
    exit('授权失败');
}

$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

echo '访问令牌:' . $token->getToken();
ログイン後にコピー

コールバックを処理するときは、最初にコールバックのステータス値が以前に保存されたステータス値と一致するかどうかを確認して、クロスを防止します。 -サイト リクエスト フォージェリ (CSRF) 攻撃。次に、認証コードを介してアクセス トークンを取得します。

6 番目のステップは、API の呼び出しです。
アクセス トークンの取得に成功したら、そのトークンを使用して関連する API を呼び出し、ユーザー リソースを取得できます。

PHPoAuthLib ライブラリを使用して、API を呼び出すサンプル コードは次のとおりです。

$response = $provider->getAuthenticatedRequest(
    'GET',
    'http://api-url',
    $token
);

$apiResponse = $provider->getParsedResponse($response);
print_r($apiResponse);
ログイン後にコピー

実際の状況に応じて、上記のコード内の API URL を置き換え、リクエスト メソッドとAPI の要件に従ってパラメータを設定します。

上記の手順により、PHP で OAuth 認証と認可を実装できます。ソーシャル メディア プラットフォームとの統合でも、他のサードパーティ アプリケーションとの統合でも、OAuth は安全で便利な認証メカニズムを提供します。 PHP を使用して OAuth を実装する方法をマスターすると、プロジェクトにさらなる柔軟性と機能性がもたらされます。

以上がPHP で OAuth 認証と認可を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート