Auth0\SDK\API\Authentication クラスが用意されており、Authentication API に直接アクセスするためのメソッドを使用できます。なお、このインターフェースはより高度なアプリケーション向けであり、通常、ユーザーセッションを管理する機能は提供していません。ほとんどのユースケースでは、Auth0 base class を使用することをおすすめします。
この記事では、一般的な認証操作の例を紹介します。
前提条件
/authorize エンドポイントにリダイレクトします。次のコードは、認証が必要なページに記述します。
- カスタムセッションハンドラーに、認証済みのユーザー状態が保存されているかどうかを確認します。ユーザーセッションの処理方法は、アプリケーションによって異なる場合があります。
- セッションが存在しない場合は、ユーザーを Universal Login ページにリダイレクトしてログインさせる必要があります。
- ログインリクエストで state 値を設定し、その後、コールバック URL に code が返されたときにその値を検証します。これは PHP セッションの ‘state’ キーに保存しています。
getLoginLink()の呼び出しでは、適切なレスポンスタイプ (この場合はcode) 、リダイレクト URI (アプリケーションがレスポンスを処理する場所。詳細は以下で説明します) 、および state (上記で設定した値) を含む正しい/authorizeリンクを生成します。- その後、この URL にリダイレクトし、ユーザーがこちらにリダイレクトされて戻ってくるのを待ちます。
- リクエストのクエリで
codeパラメーターを探します。見つからない場合は、認証を中止します。 state値があることを確認し、それが生成した値と一致することを確認します。これは CSRF 攻撃を防ぐうえで重要です。- c
odeExchange()呼び出しで code の交換を試みます。このとき、認証されたユーザーがアプリケーションに返された際に Auth0 から渡されたcodeを必ず渡します。 - これが成功すれば、交換が正常に完了したことがわかり、IDトークン や アクセストークン などの値を取得できます。
- IDトークン を検証し、そのクレームをユーザーの識別情報として使用します。
- この最後のステップが成功したら、ユーザー情報を保存し、保護されたデータのページにリダイレクトします。
クライアントクレデンシャルフロー
.env ファイル内の AUTH0_MANAGEMENT_AUDIENCE キーに追加する必要があります。
以下の例を使用して、API のアクセストークンをリクエストします。
シングルサインオンのログアウト
session_destroy() でローカルセッションを破棄すれば、アプリケーションからユーザーの認証を解除するには十分ですが、Auth0 上のエンドユーザーのセッションも終了する必要があります。これにより、次回ユーザーに Auth0 のログインフォームが表示された際、ログインするには認証情報の入力が必要になります。
まず、ログアウト完了後にユーザーをどこへリダイレクトするかを決めます。これを、Auth0 Application の設定にある “Allowed Logout URLs” フィールドに保存します。また、この URL を値として、.env ファイルに AUTH0_LOGOUT_RETURN_URL キーを追加します。
次の内容をアプリケーションのログアウトコードに追加します。