メインコンテンツへスキップ
Auth0を使用すると、アプリケーションに手軽に認証を追加することができます。このガイドは、PHPアプリケーションにAuth0 PHP SDKを使ってAuth0を統合し、認証の追加とユーザープロファイル情報の表示を行う方法について説明します。このクイックスタートを使用するには、以下の手順に従います:
1

Auth0を構成する

Auth0のサービスを利用するには、Auth0 Dashboadでセットアップしたアプリケーションが必要です。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。

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

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

Callback URLを構成する

Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。
サンプルプロジェクトに沿って進めている場合は、http://localhost:3000/callbackに設定してください。

ログアウトURLを構成する

ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。
サンプルプロジェクトに沿って進めている場合は、http://localhost:3000に設定してください。

Allowed Web Origins(許可されているWebオリジン)を構成する

[Allowed Web Origin(許可されているWebオリジン)]とは、認証フローにアクセスすることを許可して欲しいURLです。これにはプロジェクトのURLが含まれている必要があります。適切に設定されていない場合、プロジェクトが認証トークンを暗黙でリフレッシュできず、ユーザーがアプリケーションを再び訪問した時、またはページを再読み込みした時にログアウトした状態になってしまいます。
サンプルプロジェクトに沿って進めている場合は、http://localhost:3000に設定してください。
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を構成する

アプリケーションでindex.phpと呼ばれる新しいファイルを作成し、index.php タブにある、右のインタラクティブパネルからコードをコピーします。SDKが正しく機能するためには、次のプロパティを初期化中にAuth0 SDKで設定しなければなりません:
  • domain:Auth0テナントのドメインです。通常、Auth0 Dashboardにあるアプリケーションの設定の[Domain(ドメイン)]フィールドで確認できます。カスタムドメインを使用している場合は、その値を代わりに設定してください。
  • clientId:このクイックスタートで前にセットアップした、Auth0アプリケーションのIDです。Auth0 Dashboardにあるアプリケーションの[Settings(設定)]の[Client ID(クライアントID)]フィールドで確認できます。
  • clientSecret:このクイックスタートで前にセットアップしたAuth0アプリケーションのシークレットです。Auth0 Dashboardにあるアプリケーションの[Settings(設定)]の[Client Secret(クライアントシークレット)]フィールドで確認できます。
  • redirectUri:ユーザー認証の後、Auth0にユーザーをリダイレクトするアプリケーション内URLです。このクイックスタートで前にセットアップしたCallback URLと呼応します。Auth0 Dashboardにあるアプリケーションの設定の[Callback URLs(コールバックURL)]フィールドでもこの値を確認できます。コードに入力した値と前にセットアップした値は必ず一致させてください。異なった場合はユーザーにエラーが表示されます。
  • cookieSecret:セッションクッキーの暗号化に使用する長いシークレット値です。ターミナルでopenssl rand -hex 32を実行すると、適切な文字列を生成することができます。
チェックポイント
Auth0 SDKが正しく構成されました。アプリケーションを実行して次の点を確認します:
  • SDKが正しく初期化している。
  • アプリケーションがAuth0に関連したエラーを投入していない。
3

ルートを作成する

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

アプリケーションにログインを追加する

Auth0アプリケーションとAuth0 PHP SDKの構成が完了したら、プロジェクトのためにログインをセットアップする必要があります。これを実現するには、SDKのlogin()メソッドを使用して、ユーザーをAuth0のユニバーサルログインページにリダイレクトするログインボタンを作成します。ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。アプリケーションでlogin.phpという名前の新規ファイルを作成し、右のインタラクティブパネルからコードをコピーします。これにはログインに必要なロジックが含まれています。
チェックポイント
ユーザー名とパスワードを使ってログインやサインアップができるようになりました。ログインリンクをクリックして次の点を確認します:
  • アプリケーションによってAuth0ユニバーサルログインページにリダイレクトされる。
  • ログインまたはサインアップできる。
  • Auth0が、SDKを構成するために使ったredirectUriの値を使用し、アプリケーションへリダイレクトする。
5

アプリケーションにログアウトを追加する

プロジェクトにログインしたユーザーには、ログアウトする方法も必要です。SDKのlogout()メソッドを使用してログアウトボタンを処理します。ユーザーはログアウトすると、Auth0ログアウトエンドポイントにリダイレクトされてから、即座に、このクイックスタートで先ほどセットアップしたログアウトURLへとリダイレクトで戻されます。アプリケーションでlogout.phpという名前の新規ファイルを作成し、インタラクティブパネルからコードをコピーします。これにはログアウトに必要なロジックが含まれています。それからindex.phpファイルを更新して新しいログアウトボタンを含めます。
チェックポイント
アプリケーションを実行してログアウトボタンをクリックし、次の点を確認します:
  • アプリケーションによって、アプリケーションの設定で[Allowed Logout URLs(許可されているログアウトURL)]の1つに指定されているアドレスへリダイレクトされる。
  • アプリケーションにもうログインしていない。
6

ユーザープロファイル情報を表示する

ユーザーがログインやログアウトできるようになったら、認証済のユーザーに関連付けられたプロファイル情報を取得できるようにしたいと考えるはずです。たとえば、ログインしたユーザーの名前やプロフィール写真をプロジェクトに表示したいかもしれません。Auth0 PHP SDKではgetCredentials()メソッドからユーザー情報が提供されます。インタラクティブパネルでprofile.phpコードを確認し、使用方法の例をチェックします。このメソッドにはユーザーのアイデンティティに関する機密情報が含まれるため、この方法が使用できるかはユーザーの認証ステータスによります。エラーを防ぐため、getCredentials()メソッドがobjectまたはnullを返すかを必ず確認し、アプリケーションが結果を使用する前に、Auth0がユーザーを認証したかどうか判定します。
チェックポイント
以下の点を確認します:
  • ログイン後、nicknameやその他のユーザープロパティをすべて正しく表示できる。

次のステップ

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