メインコンテンツへスキップ
ResetPasswordMfaWebAuthnRoamingChallenge
Example
// reset-password-mfa-webauthn-roaming-challenge 画面の UI コンポーネント内:
const sdk = new ResetPasswordMfaWebAuthnRoamingChallenge();

async function handleSecurityKeyAuth() {
  try {
    const userWantsToRemember = document.getElementById('remember-device-checkbox')?.checked || false;
    await sdk.useSecurityKey({ rememberDevice: sdk.screen.showRememberDevice && userWantsToRemember });
    // 成功時は、Auth0 が通常リダイレクトを処理します。
  } catch (err) {
    console.error("Security key authentication failed:", err);
    // WebAuthn API エラーの場合は、Auth0 に報告します
    if (err.name && err.message) { // DOMException 型エラーの基本チェック
      try {
        await sdk.showError({ error: { name: err.name, message: err.message } });
      } catch (reportError) {
        console.error("Failed to report WebAuthn error:", reportError);
      }
    }
    // UI を更新してユーザーに通知します(例:「セキュリティキーの検証に失敗しました。もう一度お試しください。」)
    // サーバーからのエラーメッセージでページがリロードされた可能性がある場合は、`sdk.transaction.errors` も確認してください。
  }
}

コンストラクター

ResetPasswordMfaWebAuthnRoamingChallenge
Constructor
ResetPasswordMfaWebAuthnRoamingChallenge クラスの新しいインスタンスを初期化します。 グローバルコンテキストから必要なコンテキスト(画面、トランザクションなど)を取得します。

例外

Universal Login コンテキストが利用できない場合、またはコンテキスト内の画面名が ResetPasswordMfaWebAuthnRoamingChallenge.screenIdentifier と一致しない場合にスローされます。

プロパティ

branding
client
organization
prompt
screen
この画面に固有の画面データとプロパティ(WebAuthn チャレンジ用のものおよび showRememberDevice)を保持します。
tenant
transaction
untrustedData
user
screenIdentifier
string
この画面の一意の識別子で、内部の SDK ロジックおよびテレメトリーで使用されます。

メソッド

getErrors
コンテキストからトランザクションのエラー配列を取得します。存在しない場合は空の配列を返します。トランザクションコンテキストから取得されるエラーオブジェクトの配列です。
showError
Promise<void>
クライアント側の WebAuthn API エラー(navigator.credentials.get() からのエラー)を Auth0 に報告します。 このメソッドは、useSecurityKey(または navigator.credentials.get() の直接呼び出し)が 標準的な WebAuthn API のエラーによって失敗した場合に呼び出すことを想定しています (例: ユーザーがキャンセルした場合の NotAllowedErrorNotFoundErrorSecurityError、タイムアウトなど)。 このメソッドは、action: "showError::{errorDetailsJsonString}" と空の response とともにエラーの詳細を送信します。エラー報告が正常に送信されたときに解決される Promise です。 Auth0 は this.transaction.errors 内に特定のエラーメッセージを含めてページを再レンダリングするか、リダイレクトする場合があります。

例外

フォーム送信自体が失敗した場合(ネットワークエラー、不正な state など)、エラーをスローします。
Example
// `sdk.useSecurityKey()` または `navigator.credentials.get()` からのエラーを捕捉した後、UI 内で:
if (webAuthnError instanceof DOMException) {
  await sdk.showError({
    error: { name: webAuthnError.name, message: webAuthnError.message },
    rememberDevice: userWantsToRemember // 該当する場合
  });
}
tryAnotherMethod
Promise<void>
ユーザーが WebAuthn ローミング認証デバイスのチャレンジをスキップし、別の MFA(多要素認証)手段を選択できるようにします。 このアクションは action: "pick-authenticator" を Auth0 に送信し、ユーザーを MFA ファクター選択画面へ遷移させます。'pick-authenticator' アクションが送信されたときに解決される Promise です。

例外

フォーム送信が失敗した場合(ネットワークエラー、不正な state など)、エラーをスローします。
Example
// ユーザーが「別の方法を試す」ボタンをクリックしたとき:
await sdk.tryAnotherMethod({ rememberDevice: userWantsToRemember });
// Auth0 が MFA 選択画面へのリダイレクトを処理します。
useSecurityKey
Promise<void>
WebAuthn セキュリティキーのチャレンジを開始します。 このメソッドは内部で、this.screen.publicKey で指定されたチャレンジオプションを使って navigator.credentials.get() を呼び出します。 ユーザーがセキュリティキーでの認証に成功すると、生成された PublicKeyCredential が文字列化され、action: "default" と共に Auth0 に送信されます。検証試行が送信された時点で解決される Promise を返します。 処理が成功すると、通常は Auth0 によってユーザーがリダイレクトされます。

Throws

this.screen.publicKey が存在しない場合(チャレンジオプションがないことを示します)、 navigator.credentials.get() をラップしている getPasskeyCredentials が失敗した場合 (例: ユーザーがキャンセルした、オーセンティケーターが見つからない、ハードウェアエラー)、 または最終的な Auth0 へのフォーム送信が失敗した場合にエラーがスローされます。 このメソッドからのエラーは必ず捕捉してください。 WebAuthn API のエラー(NotAllowedError など)は showError を使って報告する必要があります。
Example
// reset-password-mfa-webauthn-roaming-challenge 画面用の UI コンポーネント内:
const sdk = new ResetPasswordMfaWebAuthnRoamingChallenge();

async function handleSecurityKeyAuth() {
  try {
    const userWantsToRemember = document.getElementById('remember-device-checkbox')?.checked || false;
    await sdk.useSecurityKey({ rememberDevice: sdk.screen.showRememberDevice && userWantsToRemember });
    // 成功時には、通常 Auth0 がリダイレクト処理を行います。
  } catch (err) {
    console.error("Security key authentication failed:", err);
    // WebAuthn API エラーの場合は、Auth0 に報告します
    if (err.name && err.message) { // DOMException のようなエラーかどうかの基本的なチェック
      try {
        await sdk.showError({ error: { name: err.name, message: err.message } });
      } catch (reportError) {
        console.error("Failed to report WebAuthn error:", reportError);
      }
    }
    // ユーザーに通知するために UI を更新します(例: "セキュリティキーの検証に失敗しました。もう一度お試しください。")。
    // また、ページがサーバーからのエラーメッセージと共に再読み込みされている可能性がある場合は、
    // `sdk.transaction.errors` も確認してください。
  }
}