Skip to main content
Evan Sims による
このガイドでは、Auth0 PHP SDK を使用して Auth0 を PHP バックエンド API に統合する方法を説明します。ご自身のアカウント向けに設定されたサンプルを使ってこの Quickstart を進められるよう、あらかじめログインしておくことをお勧めします。
Auth0 を初めてご利用ですか? Auth0 の仕組みを確認し、OAuth 2.0 フレームワークを使用した API の認証と認可の実装方法 についてご覧ください。

Auth0 API を設定する

API を作成する

Auth0 Dashboard の APIs セクションで、Create API をクリックします。API の名前と identifier を入力します。たとえば https://quickstarts/api です。この identifier は、後でアクセストークンの検証を設定する際に audience として使用します。Signing AlgorithmRS256 のままにします。
API を作成する
デフォルトでは、API はトークンの署名アルゴリズムとして RS256 を使用します。RS256 は秘密鍵と公開鍵のキーペアを使用するため、Auth0 アカウントの公開鍵を使ってトークンを検証します。公開鍵は JSON Web Key Set (JWKS) 形式で提供されており、こちら からアクセスできます。

権限を定義する

権限を使用すると、特定のアクセストークンを持つユーザーに代わって、リソースにどのようにアクセスできるかを定義できます。たとえば、ユーザーがマネージャーのアクセスレベルを持っている場合は messages リソースへの読み取りアクセスを許可し、管理者のアクセスレベルを持っている場合はそのリソースへの書き込みアクセスを許可する、といった設定が可能です。 許可する権限は、Auth0 Dashboard の APIs セクションにある Permissions ビューで定義できます。
権限を設定する
この例では read:messages スコープを使用します。
この例では、次の内容を示します。
  • 受信した HTTP リクエストの Authorization ヘッダーに JSON Web トークン (JWT) が含まれているかどうかを確認する方法。
  • Auth0 アカウントの JSON Web Key Set (JWKS) を使用して、トークンが有効かどうかを確認する方法。アクセストークンの検証について詳しくは、Validate Access Tokens を参照してください。

PHP Backend API との連携

Auth0 が署名したトークンを、PHP で作成したバックエンド API で認可するサンプルアプリケーションを作成してみましょう。ここでは、ドキュメントに適したシンプルな方法で進めます。より堅牢な例については、GitHub 上の Quickstart app もあわせてご確認ください。

HTTPクライアントとメッセージファクトリーのインストール

Auth0 PHP SDK は、プロジェクトのアーキテクチャとの高い相互運用性を実現するために、多くの PHP-FIG 標準をサポートしています。中でも特に重要なのが PSR-17PSR-18 です。これらの標準により、メッセージ処理やリクエスト処理を担うネットワークコンポーネントとして、任意のものを組み込めるようになります。SDK で利用するには、互換性のあるライブラリをプロジェクトにインストールする必要があります。 PHP で最も広く使われているネットワークライブラリは Guzzle ですが、PHP コミュニティには他にも多くの選択肢があります。このサンプルアプリケーションでは Guzzle を使用しましょう。

PHP SDK のインストール

Auth0 PHP SDK を使用するには、PHP の依存関係管理ツールである Composer が必要です。Composer を使うと、プロジェクトに必要なライブラリを定義し、それらをインストールできます。先に進む前に、Composer がインストールされており、シェルから利用できることを確認してください。 Auth0 PHP SDK をインストールするには、プロジェクトのディレクトリで次のシェルコマンドを実行します。
これにより、プロジェクト内に vendor フォルダーが作成され、Auth0 PHP SDK の使用に必要な依存関係がすべてダウンロードされます。さらに、サンプル内で使用される vendor/autoload.php ファイルも作成され、このファイルによってアプリケーションの動作に必要なすべてのクラスが読み込まれます。SDK を動作させるには、この autoload ファイルをプロジェクト内で require することが重要です。

SDKを設定する

まず、サンプルアプリケーションの設定を保存するために、プロジェクトのルートディレクトリに .env ファイルを作成し、環境変数を入力しましょう。 PHP は .env ファイルを単体では読み込めないため、そのためのライブラリをインストールします。サンプルアプリケーションでは特定のライブラリを使用しますが、実際のアプリケーションでは任意の dotenv ローダーを使用できます。プロジェクトディレクトリから、次のシェルコマンドを実行してライブラリをインストールしましょう。
次に、これらのコードサンプルで使用する PHP ソースファイル index.php を作成し、サンプルアプリケーション用に Auth0 PHP SDK のインスタンスを設定しましょう。

ユーザーを認証する

このサンプルアプリケーションでは、認可 に重点を置いています。認可のためにユーザーがバックエンド API にアクセスする前に認証する方法はいくつもあり、たとえば Auth0 の SPA.js ライブラリ を使用できます。このアプローチは、GitHub プロジェクトに付属するこの Quickstart アプリ で紹介されています。どの方法を採用する場合でも、このサンプルアプリケーションを動作させるには、リクエストパラメーターまたはヘッダーを通じてアクセストークンを渡す必要があります。

アクセストークンの認可

まず、受信した HTTP リクエストから JSON Web トークン (JWT) を取り出す必要があります。GET リクエストの ?token パラメーター、または HTTP_AUTHORIZATIONAuthorization ヘッダーに含まれているかを確認しましょう。
次に、token がある場合はデコードしてみましょう:
API ルーティングの設定によって、これらのチェックの組み込み方は多少異なりますが、原則は同じです。token を確認し、API エンドポイントで認可が必要な場合は、その token が有効でない、または許容できないものであればアクセスを拒否します。

キャッシュ

これでも動作しますが、実際のアプリケーションでは、Auth0 のレート制限に達したり、不要なネットワークリクエストでアプリケーションの動作が遅くなったりしないよう、キャッシュを使用するのが一般的です。Auth0 PHP SDK は PSR-6 と呼ばれるキャッシュインターフェースをサポートしており、互換性のある任意のキャッシュライブラリ を組み込むことで、SDK をアーキテクチャに自然に適合させることができます。 このサンプルでは、Symfony Cache コンポーネント ライブラリを使用します。プロジェクトのルートディレクトリから、次のシェルコマンドを実行してください。
次に、それを使用するようSDKに指示するため、SdkConfigurationを更新する必要があります:
これで、サンプルアプリケーションはトークン関連のネットワークリクエストをキャッシュするようになります。