MFA の IDトークンを検証する
amr (authentication methods reference) で、ログイン時に使用された認証方法を示す文字列の JSON 配列です。このクレームは IDトークンのペイロードに含まれている必要があり、値 mfa を含んでいなければなりません。
この値には、事前定義された Authentication Method Reference Values のいずれかが含まれる場合があります。mfa 以外の値が含まれることもあるため、検証時には amr が存在することを確認し、その内容に mfa が含まれているかも確認する必要があります。
ユーザーが制限されたページへのアクセスを試みた際に、トークンからそのユーザーが MFA で認証していないことがわかった場合は、認証を再度トリガーできます。この認証は、Action を使用して MFA がトリガーされるように設定されています。ユーザーが 2 つ目の認証要素を提供すると、amr クレームを含む新しい IDトークンが生成され、アプリに送信されます。
- IDトークンを取得します。
- トークンの署名を検証します。これにより、トークンの送信者が正当な送信元であること、およびメッセージが途中で改ざんされていないことを確認できます。
- 次のクレームを検証します。
| クレーム | 説明 |
|---|---|
exp | トークンの有効期限 |
iss | トークンの発行者 |
aud | トークンの想定受信者 |
amr | ペイロードに amr が存在しない場合、または値 mfa を含まない場合、そのユーザーは MFA でログインしていません。ペイロードに amr が存在し、値 mfa を含む場合、そのユーザーは MFA でログインしています。 |
AMR クレームの例外
amr クレームは、次のユースケースを除き必須です。
- ホスト型ログインフローでは、ユーザーが MFA チャレンジを正常に完了した後にのみ、
amrクレームが IDトークンに追加されます。アプリケーションが新たに発行される IDトークンに対してサイレント認証またはリフレッシュトークンを使用する場合、ユーザーは以前に MFA でログインを完了しているため、amrクレームは含まれません。 - MFA API で発行されたトークンには
amrクレームは含まれません。amrクレームは、ユーザーが IDトークンを受け取る時点で使用された認証方法を示します。MFA API の認証プロセスでは、アプリケーションが認証フローを制御するため、必要に応じて MFA を強制できます。
例: MFA がある場合の値
例: MFA を使用しない値
シナリオ: プッシュ通知を使用する給与データ
前提条件
- Web アプリケーションを登録する。
- データベース接続を作成する。
- プッシュ通知を使用するには、MFA を有効にします。
Action を作成する
CLIENTS_WITH_MFA変数には、この Action を適用するアプリケーションの が含まれます。不要であれば、これ (および後続のif条件) を削除できます。event.transaction.acr_valuesプロパティは、認証コンテキストクラス参照 (acr) を含む文字列の配列です。これは省略可能なプロパティで、アプリケーションが認証リクエスト内でこれを に送信した場合にのみ存在します。この例では、Web アプリは認証リクエストにこれを含めますが、それは、まだ MFA で認証していないユーザーが給与情報にアクセスしようとした場合に限られます。Web アプリがこれを含める場合は、http://schemas.openid.net/pape/policies/2007/06/multi-factorという値を設定します。これは、認可サーバーに MFA を必須にさせたいことを示します。また、コードで設定したapi.multifactorプロパティ値により、テナントで構成済みの利用可能ないずれかの方法を使って、ユーザーに MFA チャレンジを求めます。api.multifactor.enable()メソッドの詳細については、Action Triggers: post-login API object を参照してください。http://schemas.openid.net/pape/policies/2007/06/multi-factorポリシーは、エンドユーザーが複数の認証要素、つまり MFA を提示して Provider に認証する認証メカニズムを定義します。詳細については、OpenID Provider Authentication Policy Extension 1.0 を参照してください。
アプリを設定する
mfa の amr クレーム が含まれます。) ユーザーがすでに MFA で認証されている場合、Web アプリは制限されたページを表示します。そうでない場合、Web アプリは acr_values パラメーターに次の値を含む新しい認証リクエストを送信します。
http://schemas.openid.net/pape/policies/2007/06/multi-factorこれにより Action がトリガーされます。
このシナリオの Web アプリは認証に Authorization Code Flow を使用するため、リクエストは次のとおりです。
ユーザーがMFAで認証されると、Webアプリは認可コードを受け取ります。この認可コードは新しいIDトークンと交換する必要があり、そのIDトークンには mfa を値とする amr クレームが含まれているはずです。認可コードをIDトークンと交換する方法については、Authorization Code Flow を使用したログインの追加 を参照してください。
IDトークンを検証する
jwt.verify) 、トークンをデコードして、ペイロードに amr が含まれているかどうかを確認し、含まれている場合はその結果をコンソールに出力します。