Skip to main content
Auth0 PHP SDK には Auth0\SDK\API\Authentication クラスが用意されており、これを使って Authentication API に直接アクセスするためのメソッドを利用できます。なお、このインターフェースはより高度なアプリケーション向けで、通常はユーザーのセッションを管理する機能は備えていません。ほとんどのユースケースでは、Auth0 base class を使用することをおすすめします。 この記事では、一般的な認証操作の例を紹介します。

前提条件

以下のドキュメントは、Installation と Getting started セクションの手順を完了し、そこで示されているコードの続きから進めることを前提としています。

認可コードフロー

認可コードフローは、ユーザーにアプリケーションへのアクセスを許可するための基本的な方法です。このフローは、Manage Login, ログアウト, and User Profilesページで使用されているものと同じです。ログインやコールバックの処理をより細かく制御する必要がある場合は、このセクションで Authentication API を直接使用する方法を説明します。 認可コードを生成するには、ユーザーが Auth0 で認証される必要があります。これは、テナントのドメインにある /authorize エンドポイントにリダイレクトすることで行われます。次のコードは、認証が必要なページに表示されます。
上記のプロセスでは、次のことを行います。
  1. カスタムのセッションハンドラーに、認証済みユーザーの状態が保存されているかどうかを確認します。ユーザーセッションの扱い方は、アプリケーションによって異なる場合があります。
  2. セッションがない場合は、ユーザーを Universal Login Page にリダイレクトしてログインさせる必要があります。
  3. ログインリクエストで state 値を設定し、code がコールバック URL に返されたときにその値を検証します。これは PHP セッション内の ‘state’ キーに保存しています。
  4. getLoginLink() の呼び出しでは、適切なレスポンスタイプ (この場合は code) 、リダイレクト URI (アプリケーションでレスポンスを処理する場所。詳細は後述) 、および state (上記で設定した値) を含む正しい /authorize リンクを構築します。
  5. その後、この URL にリダイレクトし、ユーザーがこちらへリダイレクトされて戻ってくるのを待ちます。
認証後、ユーザーはコールバック URL でアプリケーションにリダイレクトされ、次のように処理されます。
プロセスを詳しく見ていきましょう。
  1. リクエストクエリに code パラメータがあるか確認します。見つからなければ、認証を中止します。
  2. state 値が存在すること、およびそれがこちらで生成したものと一致することを確認します。これは CSRF 攻撃を防ぐために重要です。
  3. codeExchange() 呼び出しでコード交換を試みます。このとき、Auth0 が認証中のユーザーをアプリケーションに返した際に渡された code を必ず渡します。
  4. これに成功すれば、交換が正常に完了し、ID トークンやアクセストークンなどの値を取得できたことがわかります。
  5. ID トークンを検証し、そのクレームをユーザーの識別情報として使用します。
  6. この最後の手順も成功したら、ユーザー情報を保存し、機密データの画面にリダイレクトします。

クライアント認証情報フロー

クライアント認証情報フロー では、Auth0 Dashboard で設定したスコープに基づいて、アプリケーションに特定の API へのアクセス権を付与できます。これにより、たとえばアプリケーションから を呼び出せます。認証が成功すると、リクエストした API 用の が発行されます。 まず、アプリケーション Settings ページの Advanced settings > Grant Types タブで Client Credentials グラントを有効にします。 次に、API の Settings ページにある Machine to Machine Applications タブで、使用する API に対してアプリケーションを認可します。必要なスコープのみをすべて選択して Update をクリックします。次に Settings タブに戻って Identifier の値をコピーします。この値は .env ファイルの AUTH0_MANAGEMENT_AUDIENCE キーに追加する必要があります。 以下の例を使用して、API の アクセストークン をリクエストします。
グラントが正常に完了すると、次のように表示されます:
詳しくは、Management API を使用するを参照し、この アクセストークン の使用方法をご確認ください。

シングルサインオンのログアウト

session_destroy() でローカルセッションを破棄すれば、ユーザーをアプリケーションからログアウトさせるには十分ですが、Auth0 上のエンドユーザーのセッションも終了させる必要があります。これにより、次回ユーザーに Auth0 のログインフォームが表示されたとき、ログインするには資格情報の入力が必要になります。 まず、ログアウト完了後にユーザーの遷移先とする場所を決めます。これを Auth0 アプリケーションの設定にある “Allowed Logout URLs” フィールドに保存します。また、この URL を値として AUTH0_LOGOUT_RETURN_URL キーを .env ファイルに追加します。 次のコードをアプリケーションのログアウトコードに追加します:

詳細情報