ホームページ  >  記事  >  バックエンド開発  >  PHPでOAuth認証を使用する方法

PHPでOAuth認証を使用する方法

PHPz
PHPzオリジナル
2023-06-22 08:30:06936ブラウズ

近年、サードパーティのログインをサポートするアプリケーションが増えているため、OAuth 認証プロトコルの人気が高まっています。 OAuth を実装すると、サードパーティ アプリケーションは、ユーザーのパスワードを知らなくても、他のアプリケーションからユーザー認証を取得できるようになります。 PHP はサーバー側プログラミング言語として広く使用されており、OAuth 認証もサポートしています。この記事では、PHP の OAuth ライブラリを使用して OAuth 認証を実装する方法を紹介します。

OAuth とは何ですか?

OAuth は認可標準プロトコルであり、アプリケーションがパスワードを明かさずにユーザー認可を得て別のアプリケーションの API またはデータにアクセスできるようにするオープンで安全なプロトコルです。これは主に、ユーザー名とパスワードをサードパーティ アプリケーションに提供せずに、サードパーティ アプリケーションが別のアプリケーションのユーザー データにアクセスできるようにするために使用されます。

OAuth 認証の基本プロセス:

OAuth 2.0 認可プロセスは、許可されたアクセスに基づくプロセスです。その基本的なプロセスは次のとおりです。

  1. ユーザーは、クライアント アプリケーションからリソースへのアクセスを要求します。
  2. クライアント アプリケーションは、ユーザーを認証サーバーにリダイレクトして、必要なユーザー認証情報を提供します。
  3. 認証サーバーは、クライアント アプリケーションがユーザーのリソースにアクセスすることを承認するかどうかをユーザーに尋ねます。
  4. ユーザー認証により、認証サーバーはクライアントアプリケーションに対してアクセストークン(アクセストークン)を発行します。
  5. クライアント アプリケーションは、リソース サーバーにアクセス トークンを提供します。
  6. リソース サーバーはアクセス トークンを検証し、アクセス トークンが有効な場合は、要求されたリソースをクライアント アプリケーションに提供します。

PHP の OAuth ライブラリを使用して OAuth 認証を実装する

まず、PHP OAuth 拡張ライブラリの基本概念と使用法を理解する必要があります。PHP OAuth 拡張ライブラリは、 OAuth プロトコルの直接実装。OAuth バージョン 1.0a および 2.0 仕様を使用します。 PHP OAuth 拡張ライブラリをサーバーにインストールする必要があります。PHP OAuth と OAuth 2.0 は同じものではないため、2 つの異なるバージョンのライブラリをインストールする必要があります。

OAuth ライブラリを使用して PHP に OAuth 認証を実装する手順は次のとおりです:

ステップ 1: PHP OAuth 拡張ライブラリをインストールする

最初に、次のことを確認する必要があります。サーバーに PHP OAuth 拡張ライブラリがインストールされているかどうか。すでにインストールされている場合は、この手順をスキップしてください。インストールされていない場合は、以下の手順に従ってインストールしてください:

  1. コマンドを使用して直接インストールします (root 権限が必要):

    sudo apt-get install php -oauth

  2. 手動でインストールする場合は、次の手順に従ってください:

    1. PHP OAuth 拡張ライブラリの最新バージョンをダウンロードします。
    2. ダウンロードしたファイルを解凍し、解凍されたディレクトリに移動します。
    3. 次のコマンドを実行します:

      phpize

    4. Configure:

      ./configure

    5. コンパイルとインストール:

      make && sudo make install

##ステップ 2: OAuth アプリケーション情報の準備

#OAuth 認証を使用するには、アプリケーションを OAuth プロバイダーに登録し、資格情報を取得する必要があります。各 OAuth プロバイダーには独自のアプリケーション登録プロセスがあり、そのガイダンスに従って登録プロセスを完了する必要があります。正常に登録して資格情報を取得すると、次の情報を取得できます:

クライアント ID
  1. クライアント キー
  2. 認可範囲
  3. 認可エンドポイント
  4. トークン エンドポイント
  5. ステップ 3: OAuth 資格情報を使用して OAuth プロバイダーに接続します

OAuth プロバイダーに接続してリクエストを行うには、承認するには、次の手順を実行してください。以下の手順に従ってください:

    OAuth オブジェクトを作成します:
  1. $oauth = new OAuth(

     'your client id',   //客户端ID
     'your client secret',   //客户端密钥
     OAUTH_SIG_METHOD_HMACSHA1,  //签名方法
     OAUTH_AUTH_TYPE_AUTHORIZATION //认证类型

    );

  2. OAuth プロバイダーの認証エンドポイントとトークン エンドポイントを設定します:
  3. $oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);

    $oauth->setRequestTokenUrl('https:// Provider.com/ oauth/request_token');

    $oauth->setAccessTokenUrl('https://provider.com/oauth/access_token');
    $oauth->setAuthUrl('https:// Provider.com/ oauth/authorize');

  4. リクエスト トークンを取得します:
  5. $oauth->getRequestToken('https://provider.com/oauth /request_token', 'callback url');

  6. ステップ 4: OAuth 認証トークンを使用する

リクエスト トークンを取得した後、認証トークンを使用して、保護されたリソースにアクセスする必要があります。 OAuth プロバイダー。認可トークンを使用するには、それを OAuth プロバイダーに送信し、アクセス トークンを要求する必要があります。アクセス トークンを取得すると、保護された API を呼び出すリソースにアクセスできるようになります。

次のサンプル コードは、認可トークンを使用して保護された API にアクセスする方法を示しています。

    OAuth オブジェクトの作成:
  1. $oauth = new OAuth(

     'your client id',   //客户端ID
     'your client secret',   //客户端密钥
     OAUTH_SIG_METHOD_HMACSHA1,  //签名方法
     OAUTH_AUTH_TYPE_AUTHORIZATION //认证类型

    );

  2. Settings OAuth プロバイダーの承認とトークン エンドポイント:
  3. $oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);

    $oauth->setRequestTokenUrl('https://provider.com/oauth/request_token' );

    $oauth->setAccessTokenUrl('https://provider.com/oauth/access_token');
    $oauth->setAuthUrl('https://provider.com/oauth/authorize' );

  4. 認可トークンの取得:
  5. $oauth->setToken('アクセス トークン', 'アクセス トークン シークレット');

  6. 保護された API へのアクセス:
  7. $oauth->fetch('https://provider.com/api/resource');

  8. 要約

OAuth 認証は、アプリケーションがパスワードを公開せずに他のアプリケーションからユーザー データを安全に要求できるようにする一般的な認証標準です。 PHP OAuth 拡張ライブラリは OAuth プロトコルの直接実装を提供するため、PHP で OAuth 認証を簡単に実装できます。 OAuth 認証を使用すると、ユーザーのデータが安全で悪用されにくいことを保証できます。

以上がPHPでOAuth認証を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。