メインコンテンツへスキップ
Auth0を使用すると、アプリケーションに手軽にトークンベースのエンドポイント認可を追加することができます。このガイドは、Auth0 PHP SDKを使ってAuth0を統合し、トークンベースの認可の追加とアプリケーションルートの保護を行う方法について説明します。このクイックスタートを使用するには、以下の手順に従います:
  • Auth0の無料アカウントにサインアップするか、Auth0にログインします。
  • Auth0に統合したいPHPプロジェクトを用意します。または、ログインした後に、サンプルアプリケーションを表示してダウンロードすることもできます。
    1

    Auth0を構成する

    Auth0のサービスを利用するには、Auth0 Dashboadに登録済みのアプリケーションがある必要があります。Auth0アプリケーションは、プロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。

    アプリケーションを構成する

    対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。代わりに完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。

    APIを構成する

    同様に、Auth0 APIを新規作成するか、Dashboardから統合するプロジェクトを表す既存のAPIを使用する必要があります。APIに一意の識別子を選択して記録します。以下のアプリケーションを構成するには、その識別子が必要です。
    2

    Auth0 PHP SDKをインストールする

    PHPアプリで、Auth0の認証・認可を手軽に実装できるように、Auth0はPHP SDK(Auth0-PHP)を提供しています。Auth0 PHP SDKでは、ネットワーク要求を管理するために、PSR-17PSR-18対応HTTPライブラリーをインストールする必要があります。ライブラリーがない場合は、ターミナルで以下のコマンドを実行して、信頼できる選択肢をインストールすることができます:
    cd <your-project-directory>
    composer require symfony/http-client nyholm/psr7
    
    ターミナルで以下のコマンドを実行してAuth0 PHP SDKをインストールします:
    composer require auth0/auth0-php
    

    Auth0 SDKを構成する

    SDKが正しく機能するためには、次のプロパティを初期化中にAuth0 SDKで設定しなければなりません:
    • strategy:アプリのユースケースでSDKの動作を導くのに役立ちます。この場合は、以下の定数に設定します。 Auth0\SDK\Configuration\SdkConfiguration::STRATEGY_API
    • domain:Auth0テナントのドメインです。通常、Auth0 Dashboardにあるアプリケーションの[Settings(設定)]の[Domain(ドメイン)]フィールドで確認できます。カスタムドメインを使用している場合は、この値をカスタムドメインの値に設定してください。
    • clientId:このクイックスタートで前にセットアップした、Auth0アプリケーションのIDです。Auth0 Dashboardにあるアプリケーションの[Settings(設定)]の[Client ID(クライアントID)]フィールドで確認できます。
    • clientSecret:このクイックスタートで前にセットアップしたAuth0アプリケーションのシークレットです。Auth0 Dashboardにあるアプリケーションの[Settings(設定)]の[Client Secret(クライアントシークレット)]フィールドにあります。
    • audience:上で登録したAuth0 APIの識別子です。配列として指定されている必要があります。
    チェックポイント
    Auth0 SDKが正しく構成されました。アプリケーションを実行して次の点を確認します: SDKが正しく初期化している。 アプリケーションがAuth0に関連したエラーを投入していない。
    3

    ベアラートークンをリッスンする

    次に、ベアラートークンを取得し処理するためにアプリケーションを拡張します。ベアラートークンはAPIに提供されるアクセストークンで、ユーザーに代わってクライアントから要求されます。アクセストークンは、アプリケーションでルートへのアクセスを承認または拒否します。これは、エンドポイント認可と呼ばれます。要求からアクセストークンを取得する最も簡単な方法は、PHP SDKのgetBearerToken()メソッドを使用するものです。このメソッドは、GETパラメーター、POST本文、要求ヘッダー、および他のソースからトークンを取得します。この場合、PHP SDKはtokenパラメーターのGET要求、またはHTTP Authorizationヘッダーから渡されたトークンを処理します。
    4

    ルートを作成・構成する

    次に、受信する要求をアプリケーションにダイレクトするために、ルーティングライブラリーをインストールします。これは必須手順ではありませんが、本クイックスタートの目的上、アプリケーション構造が簡略化されます。
    composer require steampixel/simple-php-router
    
    アプリケーションでrouter.phpと呼ばれる新規ファイルを作成し、ルートを定義します。router.php タブにある、右のインタラクティブパネルからコードをコピーします。
    5

    エンドポイント認可を構成する

    Auth0アプリケーションとAuth0 PHP SDKを構成し、アプリケーションで要求からベアラートークンを取得したら、次の手順はプロジェクトにエンドポイント認可をセットアップすることです。上で実装したgetBearerToken()メソッドは、要求のアクセスに関する詳細を含むTokenクラスを返します。getBearerToken()メソッドは受信要求を自動的に検証・確認するため、アプリケーションはメソッドの応答を評価することで、アクセストークンの詳細を判定します。応答がnullの場合、提供される有効なトークンはありません。そうでない場合は、応答の内容を検査し、要求の詳細を確認してください。右のインタラクティブパネルで、応答がnullであるかどうかをチェックし、/api/privateルートへのアクセスをフィルターすることができます。
    6

    スコープで認可する

    アクセストークンで要求されたスコープに基づいて、特定のルートへのアクセスをフィルターしたい場合もあるでしょう。右のインタラクティブパネルに示すように、getBearerToken()メソッドの応答から’scope’プロパティのコンテンツを評価し、アクセストークンで付与されたスコープをチェックします。

次のステップ

成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。
  • Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
  • Auth0-PHP SDK - このチュートリアルで使用されているSDKをより詳しく説明します
  • Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます
I