仕組み
例として、Fabrikamのイントラネットでは、ユーザーはユーザー名とパスワードで認証を行い、顧客データにアクセスする必要があります。ただし、(機微な給与情報が含まれた可能性のある)従業員データへのアクセスを要求する場合、MFAなどのより強力な認証メカニズムがトリガーされます。
APIのステップアップ認証
対象がAPIの場合、Auth0でスコープ、アクセストークン、Actionsを使用してステップアップ認証を実装できます。Actionを使うと、ユーザーが機微なリソースにマッピングするスコープを要求するたびに、ステップアップ認証メカニズム(MFAプロンプトなど)をトリガーできます。 弊社の例では、ユーザーはFabrikamのWebアプリにサインインします。標準のログインを使用すると、ユーザーはAPIを操作してユーザーのアカウントリストを取得することができます。つまり、ユーザー認証後にアプリケーションが受け取るアクセストークンには、read:accounts
などのスコープが含まれます。
次に、ユーザーはあるアカウントから別のアカウントに資金を送金したいと考えます。この送金は高額な取引とみなされます。この処理を実行するには、APIではtransfer:funds
スコープが必要です。
ユーザーの現在のアクセストークンにはこのスコープは含まれておらず、アプリケーションはこの状況を把握しています(アプリケーションは最初の認証呼び出しにおいて、要求したスコープセットをわかっているため)。アプリケーションは別の認証呼び出しを行いますが、今度は、transfer:funds
スコープを要求します。ブラウザーがAuth0にリダイレクトされます。高価値スコープが要求されたため、FabrikamのActionに基づいて、Auth0はMFAで認証を行うようユーザーにチェレンジします。ユーザーがMFAで認証に成功すると、高価値スコープを含む新しいアクセストークンが生成、送信されます。アプリケーションはアクセストークンをAPIに渡し、検証後に破棄することで、1回限り使用できるトークンとして扱われます。
詳細については、「API用にステップアップ認証を構成する」をお読みください。