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

前提条件

Auth0 を使用して CIBA のプッシュリクエストを開始するには、次の前提条件を満たす必要があります。

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

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

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

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

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

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

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

Auth0 は、Auth0 Guardian アプリ、または Auth0 Guardian SDK と統合したカスタムアプリを通じて、ユーザーが登録したモバイルアプリまたはデバイスにプッシュ通知を送信します。 カスタムアプリを使用している場合、Auth0 Guardian SDK には、プッシュ通知で受信したデータを解析し、そのまま使用できる Notification インスタンスを返すメソッドが用意されています。Notification インスタンスには、トランザクション関連付け ID (txlinkid) が含まれており、モバイルアプリケーションはこれを使用して Auth0 から同意の詳細を取得します。 以下のコードサンプルは、Guardian SDK を使用した iOS および Android のモバイル向けプッシュ通知実装例です。
Auth0 Guardian SDK と統合された Auth0 Guardian アプリまたはカスタムアプリは、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 スコープが含まれている場合にのみ返されます。

詳細情報