Authは初めてですか? Auth0 の仕組み、従来型Webアプリケーションとの統合方法、および使用するプロトコルについてご覧ください。
Auth0 を設定する
アプリケーションのキーを取得する
Auth0 にサインアップすると、新しいアプリケーションが 1 つ作成されます。あるいは、自分で新しく作成している場合もあります。Auth0 と通信するには、そのアプリケーションに関するいくつかの情報が必要です。これらの情報は、Auth0 Dashboard の Application Settings セクションで確認できます。
- Domain
- Client ID
- Client Secret
このページ上部のサンプルをダウンロードした場合は、これらの情報はあらかじめ入力されています。
コールバック URL を設定する
コールバック URL とは、ユーザーの認証完了後に Auth0 がそのユーザーをリダイレクトするアプリケーション内の URL のことです。アプリのコールバック URL は、Application Settings の Allowed Callback URLs フィールドに追加する必要があります。このフィールドが設定されていないと、ユーザーはアプリケーションにログインできず、エラーが表示されます。このページ上部からダウンロードしたサンプルプロジェクトを使っている場合、Allowed Callback URLs フィールドに追加するコールバック URL は
http://127.0.0.1:3000/ です。Logout URLを設定する
ログアウト URL とは、ユーザーが認可サーバーからログアウトした後に Auth0 がリダイレクトできる、アプリケーション内の URL です。これはreturnTo クエリパラメータで指定します。アプリケーションのログアウト URL は、Application Settings の Allowed Logout URLs フィールドに追加する必要があります。このフィールドが設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーが表示されます。
このページ上部からダウンロードしたサンプルプロジェクトを使って進めている場合は、Allowed Logout URLs フィールドに
http://127.0.0.1:3000 をログアウト URL として追加してください。PHPアプリケーションを統合する
PHPアプリケーションでユーザーを認証するサンプルアプリケーションを作成してみましょう。ここでは、ドキュメント向けにシンプルな方法を採用します。より本格的な例については、GitHub 上の Quickstart アプリ もご覧ください。HTTPクライアントとメッセージファクトリーのインストール
Auth0 PHP SDK は、アーキテクチャに応じた相互運用性を実現できるよう、多くの PHP-FIG 標準をサポートしています。特に重要なのが、PSR-17 と PSR-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を正しく動作させるには、プロジェクト内でこのオートロードファイルを必ずrequireしてください。
SDKの設定
まず、サンプルアプリケーションの設定を保存するため、プロジェクトのルートディレクトリに.env ファイルを作成し、環境変数を入力しましょう。
PHP は .env ファイルを単体では読み取れないため、そのためのライブラリをインストールします。サンプルアプリケーションでは特定のライブラリを使用しますが、実際のアプリケーションでは好みの dotenv ローダーであればどれを使っても問題ありません。プロジェクトディレクトリで、次のシェルコマンドを実行してライブラリをインストールしましょう。
index.php を作成し、サンプルアプリケーション向けに Auth0 PHP SDK のインスタンスを設定しましょう。
アプリケーションのルートを設定する
最近のPHPアプリケーションでは、ルーティングを使って受信したHTTPリクエストを処理用のコードに渡し、ユーザーがアプリ内の特定の “ページ” にアクセスしたときに何が起こるかを決定します。アプリケーションにルーティングを実装する方法は1つではなく、利用できるライブラリも数多くあります。ここではサンプルアプリケーションの都合上、特定のライブラリを使用しますが、実際のアプリケーションでは自由に別のものを選んでください。 それでは、プロジェクトのディレクトリで、ルーティングライブラリをインストールするために次のシェルコマンドを実行しましょう。index.php を再度開いて、アプリケーションに実際の機能を持たせましょう。まず、ルーティングライブラリを読み込み、後でサンプルアプリケーション内のいくつかの箇所から参照できるように、各ルートの完全な URL を便宜上名前付き定数として定義します。
セッションを確認する
Auth0 PHP SDK には、ユーザーが認証済みかどうかを確認し、そのプロファイルを取得できる便利なメソッドgetCredentials() があります。これを index ルートに追加して、ログインしていればユーザープロファイルを表示し、そうでなければログインが必要であることを知らせましょう。
user プロパティのレスポンスは配列なので、ユーザーのプロファイルに含まれるすべてのプロパティにアクセスできます。たとえば、ユーザーのニックネームは $session->user<a href="https://auth0.com/docs/users/user-profile-structure" target="_blank" rel="noreferrer">nickname から、メールアドレスは $session->useremail から取得できます。この構造は正規化されたユーザープロファイルです。詳しくはこちらをご覧ください。
ユーザープロファイルの内容は、使用するソーシャルプロバイダーによって異なるため、このアプリケーションのロジック内で特定の値が常に存在すると決めつけてはいけません。たとえば、PHP の isset や null 合体演算子などを使って、値が存在する場合もしない場合も適切に処理してください。
ログイン
それでは、/login ルートを作成しましょう。このルートでは Auth0 PHP SDK のlogin() メソッドを使ってユーザーセッションを設定し、このユーザーがログインするための Auth0 の Universal Login ページへのカスタマイズ済み URL を返します。
認証コールバックの処理
ユーザーが Auth0 の Universal Login ページでの認証を終えると、サンプルアプリケーションのコールバックルート/callback に戻ります。このステップでは、その処理を行います。
Auth0 からユーザーが戻される際、HTTPリクエストのクエリにはいくつかの重要なパラメーターが含まれます。Auth0 PHP SDK の exchange() メソッドがそれらを処理してくれるため、認証フローの完了は簡単です。
ログアウト
最後になりますが、ユーザーのログアウトを適切に処理しましょう。Auth0 PHP SDK のlogout() メソッドは、サンプルアプリケーションのセッションクッキーを削除し、ユーザーを Auth0 の /logout エンドポイント にリダイレクトします (これにより Auth0 セッションと、ID プロバイダーのセッションがあればそれらもログアウトされます) 。その後、ユーザーは / index ルートに戻ります。