Skip to main content
クライアント主導のバックチャネル認証 (CIBA) 機能を使用するには、Enterprise プランまたは適切なアドオンが必要です。詳しくは、Auth0 Pricingを参照してください。
CIBA でモバイルプッシュ通知を使用すると、ユーザーは登録済みのモバイルデバイスでリクエストを認証または承認するためのプッシュ通知を受け取ります。CIBA でモバイルプッシュ通知を送信するには、Auth0 Guardian アプリ、または Auth0 Guardian SDK を統合したカスタムアプリを使用できます。 モバイルプッシュ通知を使用する CIBA フローでは、ブラウザーを介さずにユーザーをモバイルデバイス上で認証および認可できます。利用側のデバイスではアクティブなブラウザーセッションが不要なため、CIBA リクエストがトリガーされる前にユーザーがログインしている必要はありません。これにより、ユーザーがすでに持っている既存のセッションにも CIBA フローが影響しないことが保証されます。 次の図は、モバイルプッシュ通知を使用するエンドツーエンドの CIBA フローを示しています。
以下の各セクションでは、モバイルプッシュ通知を使用した CIBA におけるユーザー認証の仕組みをステップごとに説明します。

前提条件

Auth0 を使用して CIBA のプッシュリクエストを開始するには、次の設定が必要です。

ステップ 1: クライアントアプリケーションが CIBA リクエスト を開始する

CIBA リクエスト を開始する対象の認可を行うユーザーを特定し、そのユーザー ID を取得するには、User Search APIs を使用します。 認可を行うユーザーのユーザー ID を取得したら、Authentication API または SDK を使用して、/bc-authorize endpoint に CIBA リクエスト を送信します。
ユーザーごとのレート制限があり、認可を行うユーザーには 1 分あたり 5 件を超えるリクエストは送信されません。

ステップ 2: Auth0 テナントが CIBA リクエストを受け付ける

Auth0 テナントが POST リクエストを正常に受信すると、そのリクエストを参照する auth-req-id を含むレスポンスが返されます:
auth_req_id の値は、CIBAフローの完了をポーリングして確認するために、/token エンドポイントに渡されます。

ステップ 3: クライアントアプリケーションがレスポンスをポーリングする

Authentication API または SDK を使用して、urn:openid:params:grant-type:ciba グラントタイプと /bc-authorize エンドポイントから受け取った auth_req_id を指定し、/token エンドポイントを呼び出します。
認可を行うユーザーがトランザクションを承認するまで、次のレスポンスが返されます。
ポーリングの待機間隔は約5秒です。これより頻繁にポーリングすると、次の応答が返されます。説明はバックオフ間隔に応じて異なります。
このエラーを解消するには、次の間隔 (秒) が経過してから /token エンドポイントをポーリングしてください。

ステップ 4: モバイルアプリケーションがプッシュ通知を受信する

Auth0 は、Auth0 Guardian アプリまたは Auth0 Guardian SDK を統合したカスタムアプリを通じて、ユーザーが登録したモバイルアプリまたはデバイスにプッシュ通知を送信します。 カスタムアプリを使用している場合、Auth0 Guardian SDK には、プッシュ通知で受信したデータを解析し、すぐに使える Notification インスタンスを返すメソッドが用意されています。Notification インスタンスにはトランザクションのリンク ID (txlinkid) が含まれており、モバイルアプリケーションはこれを使って Auth0 から同意の詳細を取得します。 以下のコードサンプルは、Guardian SDK を使用した iOS と Android のモバイル向けプッシュ通知実装例です。
Auth0 Guardianアプリ、または Auth0 Guardian SDK と統合されたカスタムアプリケーションは、Auth0 Consent API から同意の詳細、つまり binding_message の内容を取得します。 カスタムアプリケーションを使用している場合、次のコードサンプルは、Auth0 Consent API からデータを取得する iOS および Android の実装例です。
Auth0 Consent API は、binding_messagescopeaudience を含む同意の詳細を、Auth0 Guardian アプリまたは Auth0 Guardian SDK を統合したカスタムアプリに返します。モバイルアプリケーションに返されるスコープは、RBAC ポリシーに基づいてフィルタリングされます。詳しくは、ロールベースのアクセス制御 を参照してください。 モバイルアプリケーションは、認証リクエストや同意の詳細をユーザーに表示します。 次のコードサンプルは、Auth0 Consent API からのレスポンス例です。
この時点で、ユーザーは認証リクエストを承認することも拒否することもできます。

ステップ 7: モバイルアプリケーションがユーザーの応答を Auth0 に送信する

Auth0 Guardian アプリまたはカスタムアプリが、ユーザーの応答を Auth0 に送信します。 Auth0 Guardian SDK と連携したカスタムアプリを使用している場合、次のコードサンプルは、ユーザーの応答を処理する iOS および Android の実装例です:

ユーザーが認証リクエストを承認する

ユーザーが認証リクエストを拒否する

ステップ 8: フローの完了後、Auth0 がユーザーの応答を受信する

クライアントアプリケーションは、/token エンドポイントから応答を受信すると、ポーリングを終了します。CIBAフローでは、認可を行うユーザーからの応答 (承認または拒否) が常に必要であり、既存のグラントは確認されません。

ステップ 9: Auth0 がクライアントアプリケーションにアクセストークンを返す

 ユーザーがプッシュリクエストを拒否した場合、Auth0 は次のようなエラーレスポンスをクライアントアプリケーションに返します。
ユーザーがプッシュリクエストを承認すると、Auth0 は次のような をクライアントアプリケーションに返します。
refresh_token は、最初の /bc-authorize リクエストに offline_access スコープが含まれている場合にのみ付与されます。

詳細情報