Skip to main content
MfaWebAuthnRoamingChallengeMembers
Example
export interface MfaWebAuthnRoamingChallengeMembers extends BaseMembers {
  /**
   * Screen-specific properties and data, including WebAuthn challenge options.
   * @type {ScreenMembersOnMfaWebAuthnRoamingChallenge}
   */
  screen: ScreenMembersOnMfaWebAuthnRoamingChallenge;

  /**
   * Initiates the WebAuthn challenge by calling `navigator.credentials.get()` with the
   * options provided in `screen.data.publicKeyChallengeOptions`.
   * If successful, it submits the resulting credential to Auth0 with `action: "default"`.
   * If `navigator.credentials.get()` fails with a known WebAuthn API error (like `NotAllowedError`),
   * this method will internally call `reportWebAuthnError` to inform Auth0.
   *
   * @param {VerifySecurityKeyOptions} [options] - Optional parameters for the verification process,
   * such as `rememberDevice` and other custom options.
   * @returns {Promise<void>} A promise that resolves when the verification attempt is submitted.
   *                          It does not directly return data as a successful operation typically results in a redirect.
   * @throws {Error} Throws an error if `screen.data.publicKeyChallengeOptions` is missing,
   *                 if `navigator.credentials.get()` fails with an unexpected error,
   *                 or if the form submission to Auth0 fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * try {
   *   await sdk.verify({ rememberDevice: true });
   *   // On success, Auth0 handles redirection.
   * } catch (error) {
   *   console.error("Security key verification failed:", error);
   *   // Check sdk.transaction.errors for server-side validation messages if the page reloads.
   * }
   * ```
   */
  verify(options?: VerifySecurityKeyOptions): Promise<void>;

  /**
   * Reports a specific WebAuthn API error to Auth0.
   * This method should be used if `navigator.credentials.get()` fails in a way that
   * `verify()` doesn't automatically handle, or if the developer wants to explicitly
   * report an error before trying another action.
   * It submits the error details with `action: "showError::{errorDetails}"`.
   *
   * @param {ReportWebAuthnErrorOptions} options - Contains the `error` object with `name` and `message`
   * from the WebAuthn API, and any other custom options.
   * @returns {Promise<void>} A promise that resolves when the error report is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * // And webAuthnError is an error object from a failed navigator.credentials.get() call.
   * try {
   *   await sdk.reportWebAuthnError({
   *     error: { name: webAuthnError.name, message: webAuthnError.message }
   *   });
   * } catch (submitError) {
   *   console.error("Failed to report WebAuthn error:", submitError);
   * }
   * ```
   */
  reportWebAuthnError(options: ReportWebAuthnErrorOptions): Promise<void>;

  /**
   * Allows the user to opt-out of the WebAuthn challenge and select a different MFA method.
   * This action submits `action: "pick-authenticator"` to Auth0, which should navigate
   * the user to an MFA factor selection screen.
   *
   * @param {TryAnotherMethodOptions} [options] - Optional custom parameters for the request.
   * @returns {Promise<void>} A promise that resolves when the action is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * try {
   *   await sdk.tryAnotherMethod();
   *   // On success, Auth0 handles redirection to MFA selection.
   * } catch (error) {
   *   console.error("Failed to switch MFA method:", error);
   * }
   * ```
   */
  tryAnotherMethod(options?: TryAnotherMethodOptions): Promise<void>;
}

Properties

branding
client
organization
prompt
screen
Screen-specific properties and data, including WebAuthn challenge options.
tenant
transaction
untrustedData
user

Methods

reportWebAuthnError
Promise<void>
Reports a specific WebAuthn API error to Auth0. This method should be used if navigator.credentials.get() fails in a way that verify() doesn’t automatically handle, or if the developer wants to explicitly report an error before trying another action. It submits the error details with action: "showError::{errorDetails}".A promise that resolves when the error report is submitted.

Throws

Throws an error if the form submission fails.
Example
// Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
// And webAuthnError is an error object from a failed navigator.credentials.get() call.
try {
  await sdk.reportWebAuthnError({
    error: { name: webAuthnError.name, message: webAuthnError.message }
  });
} catch (submitError) {
  console.error("Failed to report WebAuthn error:", submitError);
}
tryAnotherMethod
Promise<void>
Allows the user to opt-out of the WebAuthn challenge and select a different MFA method. This action submits action: "pick-authenticator" to Auth0, which should navigate the user to an MFA factor selection screen.A promise that resolves when the action is submitted.

Throws

Throws an error if the form submission fails.
Example
// Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
try {
  await sdk.tryAnotherMethod();
  // On success, Auth0 handles redirection to MFA selection.
} catch (error) {
  console.error("Failed to switch MFA method:", error);
}
verify
Promise<void>
Initiates the WebAuthn challenge by calling navigator.credentials.get() with the options provided in screen.data.publicKeyChallengeOptions. If successful, it submits the resulting credential to Auth0 with action: "default". If navigator.credentials.get() fails with a known WebAuthn API error (like NotAllowedError), this method will internally call reportWebAuthnError to inform Auth0.A promise that resolves when the verification attempt is submitted. It does not directly return data as a successful operation typically results in a redirect.

Throws

Throws an error if screen.data.publicKeyChallengeOptions is missing, if navigator.credentials.get() fails with an unexpected error, or if the form submission to Auth0 fails.
Example
// Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
try {
  await sdk.verify({ rememberDevice: true });
  // On success, Auth0 handles redirection.
} catch (error) {
  console.error("Security key verification failed:", error);
  // Check sdk.transaction.errors for server-side validation messages if the page reloads.
}