Skip to main content
Auth0-PHP SDK には、3 つのコアクラス Auth0\SDK\Auth0Auth0\SDK\API\AuthenticationAuth0\SDK\API\Management が含まれており、それぞれ Auth0 の API 全体にわたる異なる機能向けのインターフェースを提供します。ユーザーのセッションを追跡する必要があるステートフルな Web アプリケーションを構築している場合、最も多く使用するのはベースとなる Auth0 クラスです。このクラスには、ログインとログアウト、ユーザー認証情報の取得、利用可能なセッションの確認、コールバック処理など、一般的な認証およびセッション処理タスクを扱うためのメソッドが用意されています。これらのタスクについては、以下で説明します。 これらの機能やその他の詳細については、Authentication API のドキュメント ページを参照してください。

前提条件

以下のドキュメントは、Auth0-PHP の手順を完了し、そこで提供されているコードをベースに進めることを前提としています。

ログイン

PHP SDK のデフォルトのログイン処理では、Authentication Code grant と Auth0 の ページを組み合わせて使用します。要するに、この処理は次のとおりです。
  1. アクセスを要求したユーザーは Universal Login ページにリダイレクトされます。
  2. ユーザーは、利用可能な多数の接続 のいずれかを使って認証します。ソーシャル (Google、X、Facebook) 、データベース (メールアドレスとパスワード) 、パスワードレス (メールアドレス、SMS) 、またはエンタープライズ (ActiveDirectory、ADFS、Office 365) です。
  3. 成功した場合、ユーザーは codestate の値とともにアプリケーションのコールバック URL にリダイレクトされるか、POST で戻されます。失敗した場合は errorerror_description が返されます。
  4. 認証が成功した場合は、state の値が検証されます。
  5. state が有効であれば、code の値を Auth0 に送信して交換し、IDトークン および/または アクセストークン を取得します。
  6. IDトークンに含まれるユーザー情報は、アカウントの作成、アプリケーション固有のセッションの開始、またはユーザーセッションとして保持するために使用できます。
Auth0-PHP は、これらの手順の大半を自動的に処理します。アプリケーションでは次のことを行う必要があります。
  1. ユーザーがログインする必要があるときに Auth0\SDK\Auth0::login() を呼び出す (例: リンクをクリックしたとき、保護されたコンテンツにアクセスしたときなど)
  2. ユーザーがコールバック URL にリダイレクトされたときに Auth0\SDK\Auth0::exchange() を呼び出す。
  3. ユーザーがログインしているかどうかを確認し、ユーザー情報を取得する必要があるときに Auth0\SDK\Auth0::getCredentials() を呼び出す。
これらの手順のシンプルな実装例を次に示します。
// 👆 上記の「前提条件」にリンクされている「はじめに」ガイドの続きです。そこで作成した index.php ファイルに追記してください。

// getExchangeParameters() をコールバック URL 上で使用すると、認証後の code 交換に必要なすべてのパラメーターが揃っているかを確認できます。
if ($auth0->getExchangeParameters()) {
    // パラメーターが揃っている場合は、code 交換を実行します。
    $auth0->exchange();
}

// ユーザーがすでにログインしているか確認する
$session = $auth0->getCredentials();

if ($session === null) {
    // ユーザーはログインしていません!
    // 認証のため Universal Login ページにリダイレクトします。
    header("Location: " . $auth0->login());
    exit;
}

// 🎉 この時点で、$session からアクセス可能な認証済みユーザーセッションが存在します。以降はアプリケーションのロジックを続行できます!
echo "Authenticated!";
最後に、設定ページにある Auth0 Application の “Allowed Callback URLs” フィールドに、アプリケーションの URL を追加する必要があります。その後、スクリプトを組み込んだページを読み込むと、次のようになります。
  1. すぐに、テナントの Auth0 ログインページにリダイレクトされます。
  2. いずれかの接続で正常にログインすると、アプリにリダイレクトされます。
  3. ‘Authenticated!’ と表示されたシンプルなページが表示されます。

プロフィール

ユーザーを認証したので、保持されているセッションデータを使って、ユーザープロフィールの表示などを行えます。
// 👆 上記のコードの続きです。index.php ファイルに追記してください。

printf(
    '<h1>Hi %s!</h1>
    <p><Frame><img width="100" src="/%s"></Frame></p>
    <p><strong>Last update:</strong> %s</p>
    <p><strong>Contact:</strong> %s %s</p>
    <p><a href="/docs/logout.php">Logout</a></p>',
    isset($session->user['nickname']) ? strip_tags($session->user['nickname']) : '[unknown]',
    isset($session->user['picture']) ? filter_var($session->user['picture'], FILTER_SANITIZE_URL) : 'https://gravatar.com/avatar/',
    isset($session->user['updated_at']) ? date('j/m/Y', strtotime($session->user['updated_at'])) : '[unknown]',
    isset($session->user['email']) ? filter_var($session->user['email'], FILTER_SANITIZE_EMAIL) : '[unknown]',
    ! empty($session->user['email_verified']) ? '✓' : '✗'
);

ログアウト

ログインに加え、ユーザーがログアウトできるようにする必要もあります。ユーザーがログアウトする際は、アプリケーションのセッションを無効にする必要があります。この SDK では、永続化されたユーザー データとトークン データを破棄することを意味します。
// アプリケーションからログアウトする。
header("Location: $auth0->logout());
(SSO) を使用していて、Auth0 のセッションも終了する場合は、こちらの SSO ログアウトのセクションを参照してください。ログアウト全般の詳細については、こちらを参照してください。

さらに詳しく