PHPアプリケーションにログインを追加する
Auth0を使用すると、アプリケーションに手軽に認証を追加することができます。このガイドは、PHPアプリケーションにAuth0 PHP SDKを使ってAuth0を統合し、認証の追加とユーザープロファイル情報の表示を行う方法について説明します。
このクイックスタートを使用するには、以下の手順に従います:
Auth0の無料アカウントにサインアップするか、Auth0にログインします。
統合したいPHPプロジェクトを用意します。または、ログインした後に、サンプルアプリケーションを表示してダウンロードすることもできます。
Auth0のサービスを利用するには、Auth0 Dashboadでセットアップしたアプリケーションが必要です。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。
アプリケーションを構成する
インタラクティブセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0の全てのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。
このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションに自動更新を行います。今後、アプリケーションの管理はDashboardで行えます。
代わりに完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。
Callback URLを構成する
Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。
ログアウトURLを構成する
ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。
Allowed Web Origins(許可されているWebオリジン)を構成する
[Allowed Web Origin(許可されているWebオリジン)]とは、認証フローにアクセスすることを許可して欲しいURLです。これにはプロジェクトのURLが含まれている必要があります。適切に設定されていない場合、プロジェクトが認証トークンを暗黙でリフレッシュできず、ユーザーがアプリケーションを再び訪問した時、またはページを再読み込みした時にログアウトした状態になってしまいます。
PHPアプリで、Auth0の認証・認可を手軽に実装できるように、Auth0はPHP SDK(Auth0-PHP)を提供しています。
Auth0 PHP SDKでは、ネットワーク要求を管理するために、PSR-17とPSR-18対応HTTPライブラリーをインストールする必要があります。ライブラリーがない場合は、ターミナルで以下のコマンドを実行して、信頼できる選択肢をインストールすることができます:
cd <your-project-directory>
composer require symfony/http-client nyholm/psr7
Was this helpful?
ターミナルで以下のコマンドを実行してAuth0 PHP SDKをインストールします:
composer require auth0/auth0-php
Was this helpful?
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
を実行すると、適切な文字列を生成することができます。
checkpoint.header
Auth0 SDKが正しく構成されました。アプリケーションを実行して次の点を確認します:
SDKが正しく初期化している。
アプリケーションがAuth0に関連したエラーを投入していない。
次に、受信要求をアプリケーションにダイレクトするために、ルーティングライブラリーをインストールします。これは必須手順ではありませんが、本クイックスタートの目的上、アプリケーション構造が簡略化されます。
composer require steampixel/simple-php-router
Was this helpful?
アプリケーションでrouter.php
と呼ばれる新しいファイルを作成してルートを定義し、右のインタラクティブパネルからコードをコピーします。
Auth0アプリケーションとAuth0 PHP SDKの構成が完了したら、プロジェクトのためにログインをセットアップする必要があります。これを実現するには、SDKのlogin()
メソッドを使用して、ユーザーをAuth0のユニバーサルログインページにリダイレクトするログインボタンを作成します。ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。
アプリケーションでlogin.php
という名前の新規ファイルを作成し、右のインタラクティブパネルからコードをコピーします。これにはログインに必要なロジックが含まれています。
checkpoint.header
ユーザー名とパスワードを使ってログインやサインアップができるようになりました。
ログインリンクをクリックして次の点を確認します:
アプリケーションによってAuth0ユニバーサルログインページにリダイレクトされる。
ログインまたはサインアップできる。
Auth0が、SDKを構成するために使った
redirectUri
の値を使用し、アプリケーションへリダイレクトする。
プロジェクトにログインしたユーザーには、ログアウトする方法も必要です。SDKのlogout()
メソッドを使用してログアウトボタンを処理します。ユーザーはログアウトすると、Auth0ログアウトエンドポイントにリダイレクトされてから、即座に、このクイックスタートで先ほどセットアップしたログアウトURLへとリダイレクトで戻されます。
アプリケーションでlogout.php
という名前の新規ファイルを作成し、インタラクティブパネルからコードをコピーします。これにはログアウトに必要なロジックが含まれています。それからindex.php
ファイルを更新して新しいログアウトボタンを含めます。
checkpoint.header
アプリケーションを実行してログアウトボタンをクリックし、次の点を確認します:
アプリケーションによって、アプリケーションの設定で[Allowed Logout URLs(許可されているログアウトURL)]の1つに指定されているアドレスへリダイレクトされる。
アプリケーションにもうログインしていない。
ユーザーがログインやログアウトできるようになったら、認証済のユーザーに関連付けられたプロファイル情報を取得できるようにしたいと考えるはずです。たとえば、ログインしたユーザーの名前やプロフィール写真をプロジェクトに表示したいかもしれません。
Auth0 PHP SDKではgetCredentials()
メソッドからユーザー情報が提供されます。インタラクティブパネルでprofile.php
コードを確認し、使用方法の例をチェックします。
このメソッドにはユーザーのアイデンティティに関する機密情報が含まれるため、この方法が使用できるかはユーザーの認証ステータスによります。エラーを防ぐため、getCredentials()
メソッドがobject
またはnull
を返すかを必ず確認し、アプリケーションが結果を使用する前に、Auth0がユーザーを認証したかどうか判定します。
checkpoint.header
以下の点を確認します:
ログイン後、
nickname
やその他のユーザープロパティをすべて正しく表示できる。
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- Auth0-PHP SDK - Explore the SDK used in this tutorial more fully
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
Sign up for an or to your existing account to integrate directly with your own tenant.