- 銀行間振込、操作履歴へのアクセス、アクセス認証情報の変更の承認など、自身のサービスで実行する機密性の高い操作のセキュリティ保護。
- 電子決済の承認や、アカウント検証への1回限りのアクセス許可など、サードパーティーサービスから要求される機密性の高い操作のセキュリティ保護。
トランザクション認可はAPIごとに構成しなければなりません。有効化したトランザクション認可は、そのAPIのスコープと
authorization_details.types
に適用されます。前提条件
詳細なトランザクション認可データやその他の機密性が高い、または規制されているデータは
authorization_details
外に渡さないください。transactional-authorization-with-mfa
をconsent_policy
に設定します。- 使用する
authorization_details.types
を登録します。
エンドツーエンドのフロー
以下の図は、コンテキストに基づいたSCAを使用したトランザクション認可のエンドツーエンドのフローを示しています。以下の4つの主要な段階があります。- ユーザーをトランザクションの詳細と共にAuth0に安全にリダイレクトします。この段階では、フロントチャネル(例:ブラウザー)に機密情報を公開することは避けます。
- ユーザーの認証の後に、動的ポリシーを適用します。Actionsを使用して、トランザクションの詳細、および外部APIなどのソースから取得したその他の情報に基づいて、次の段階を動的に決定できます。詳細については、「動的ポリシーの適用」をお読みください。
- 第二認証要素でユーザーにチャレンジし、ユーザーが明示的に承認できるようにトランザクションの詳細を表示します。この段階は、Actionsを使用して適用する認証要素によって異なります。
- アクセストークンを取得し、機密性の高い操作を進めます。APIは、アクセストークンに関連する承認済みのトランザクション詳細を検証します。

トランザクション詳細を伝えてAuth0にリダイレクト
Auth0での認証後、ユーザーは最初にWebアプリケーションにアクセスします。このユースケースの例に従うと、その後ユーザーは、連絡先の1つへの送金を要求します。 金融グレードのセキュリティ標準を満たすために、ハイリーレギュレーテッドアイデンティティは、トランザクション詳細をブラウザーから隠すために、プッシュ認可要求(PAR)を使用します。ブラウザーを通して/authorize
エンドポイントにクエリパラメーターを送信する代わりに、PARは、POST要求を使用して、バックエンドからパラメーターを特別な/par
エンドポイントに直接送信します。セットアップの方法については、「プッシュ認可要求(PAR)を構成する」をご覧ください。
PAR要求本文で、トランザクションの詳細は、authorization_details
JSONオブジェクトの一部として送信されます。
authorization_details
を確認します。authorization_details
およびRARとの使用方法の詳細については、「Rich Authorization Requestsを使用した認可コードフロー」をお読みください。
FAPI 1高度なセキュリティのコンプライアンス要件を満たしたい場合は、/par
または/token
エンドポイントに対してバックエンドを認証するために、公開鍵の暗号方式も使用する必要があります。これは、クライアントシークレットを送信するよりも、安全です。Auth0は、以下の公開鍵の暗号認証方法を提供しています。
PAR要求に対する成功の応答を受け取った後、ユーザーをAuth0テナントの/authorize
エンドポイントにリダイレクトします。PAR応答で受け取ったrequest_uri
パラメーターとclient_id
を専用クエリパラメーターとして追加します。こうして、機密情報をブラウザーから効果的に隠すことができます。
動的ポリシーを適用する
を使用せずにユーザーがログインして、ブラウザーがAuth0テナントの/authorize
エンドポイントをヒットした場合、Auth0はユーザーの認証を試みます。この銀行間振込の承認の例では、Auth0は、Webアプリケーションにアクセスするために、すでにユーザーを認証しています。しかし、電子決済などのために、サードパーティがユーザーをリダイレクトした場合、Auth0は、ユーザーにログイン画面を表示します。認証フローの詳細については、認証ドキュメントをご覧ください。
Auth0がユーザーの認証に成功したら、Auth0は、ログイン後のActionsをトリガーし、ユーザー、アプリ、使用された認証要素に関するトランザクション詳細、さらにログイン後のイベントオブジェクトの詳細を公開します。ログイン後のイベントオブジェクト内のevent.transaction.requested_authorization_details
プロパティには、前段階で受け取った認証要求に関する詳細が含まれています。
ログイン後のイベントオブジェクトを使用して、このトランザクションの処理方法について決定します。たとえば以下のコード例で示すように、外部のリスクエンジンにトランザクション詳細を送信して、リスクレベルを評価した後に、SMSを使用したステップアップ認証を要求するかどうかを決定できます。
event.transaction.linking_id
を公開します。後で、Auth0がトランザクションの承認をユーザーに促すとき、linking_id
は、Dynamic Linkingの参照を提供します。また、特定のトランザクションの認可の詳細と、あなた側のAPI呼び出しを関連づけるために、カスタムクレームとしてアクセストークンにlinking_id
を追加できます。これは、 Auth0がテナントログにlinking_id
を含めるため、トレーサビリティに役立ちます。
トランザクションの詳細の承認を得るためにユーザーにチャレンジする
ユーザーが登録した要素、セッションにより満たされた要素、および/またはご自身の好みに応じて、使用する認証要素をカスタマイズできます。また、ユーザーが選択できる代替手段も提供できます。詳細については、「新しいユニバーサルログインでのMFA選択をカスタマイズする」をご覧ください。 さらにSMS、メール、WebAuthnについては、authorization_detailsおよびその他のトランザクションの詳細からの表示したい情報を使用して、Auth0がユーザーに表示する同意画面をカスタマイズできます。詳細については、「Rich Authorization Requests(RAR)を構成する」をお読みください。プッシュ通知については、モバイルアプリケーションがエンドユーザーにトランザクション詳細を表示するため、これが適用されません。 以下のセクションでは、トランザクション認可のために構成できる様々な認証要素について説明します。プッシュ通知
Auth0が消費デバイス(例、トランザクションを開始したラップトップ)に多要素認証()の待ち画面をユーザーに提示している間、ユーザーの登録済みのデバイスにプッシュ通知を送信します。
linking_id
を外部サーバーまたはエンドポイントに保管して、たったの数分で利用できるようにします。その後、以下のコード例で示すように、プッシュ通知でユーザーにチャレンジします。otpFallback: false
のオプションを追加して、OTPを手動で入力するフォールバックのオプションを禁止することを忘れないでください。
Actionsから
api.authentication.challengeWith
の前にapi.multifactor.enable('any', { allowRememberBrowser: false })
を呼び出すと、このデバイスを記憶するオプションが削除され、ユーザーに対し、全トランザクションでプッシュチャレンジの検証を強制することができます。event.transaction.linking_id
を含みます。通信時、プロパティ名は、txlnkid
に短縮されます。linking_id
を使用して、モバイルアプリケーションは、トランザクション詳細を取得し、ユーザーに表示できます。ユーザーがこの操作を承認または拒否すると、モバイルアプリケーションは、MFAチャレンジをそれぞれ許可または拒否します。トランザクションは、操作の完了の段階へと進みます。
注意: プッシュ通知を開くユーザーのIDを検証するには、モバイルアプリケーションに生体認証を追加できます。詳細については、「MFAのためにデバイス生体認証を使ってWebAuthnを構成する」をご覧ください。
SMS、メール、WebAuthn
ユーザーにチャレンジする認証要素として、携帯電話、メール、Webauthnをセットアップすることもできます。これらの認証要素については、Auth0は、対応するMFA待ち画面をユーザーに提示します。ユーザーがMFA待ち画面のチャレンジを検証した後、Auth0は、明示的な承認のために、ユーザーにトランザクション詳細を表示します。承認ステップが正しく機能するように、Rich Authorization Requestsを構成する必要があることを覚えておいてください。 携帯電話の認証要素については、Auth0は、SMSまたは音声を通して、ユーザーに検証コードを送信します。以下のスクリーンショットは、Auth0がSMSを通してコードを送信した後のMFA待ち画面を示しています。
Actionsから
api.authentication.challengeWith
の前にapi.multifactor.enable('any', { allowRememberBrowser: false })
を呼び出すと、このデバイスを記憶するオプションが削除され、ユーザーに対し、全トランザクションでプッシュチャレンジの検証を強制することができます。PSD2(欧州連合の第2次決済サービス指令)では、メールは強力な顧客認証(Strong Customer Authentication)の有効な認証要素として認められていません。PSD2に準拠するため、別の認証要素を使用してユーザーにチャレンジすることをお勧めします。
チャレンジなし
第二認証要素でユーザーにチャレンジしない場合、Auth0は、同意画面で、トランザクション詳細の明示的な承認をユーザーに求めます。操作の完了
操作を完了するために、Auth0は、標準の認可コードフローに従います。トランザクションが承認された場合、ユーザーブラウザは、認証コードと共にアプリケーションにリダイレクトされ、その後認証コードは、JSON Web Encryptionを使用して暗号化されたアクセストークンに交換されます。アクセストークンは、最初に渡したauthorization_details
を含んでいます。以下のコード例は、暗号化されたアクセストークンの内容を示しています。
authorization_details
を確認します。検証後、送金が正常に実行され、承認画面が表示されます。
いずれかの段階でトランザクションが拒否された場合、ユーザーブラウザは、access_denied
エラーコードを表示します。