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

  /**
   * Initiates the WebAuthn platform authenticator challenge.
   * This method internally calls `navigator.credentials.get()` using the challenge options
   * provided in `screen.publicKey`.
   * If successful, it submits the resulting credential to Auth0 with `action: "default"`.
   *
   * If `navigator.credentials.get()` fails (e.g., user cancellation, timeout, or other WebAuthn API errors),
   * it's recommended to call `reportBrowserError` with the error details.
   *
   * @param {VerifyPlatformAuthenticatorOptions} [options] - Optional parameters for the verification process,
   * such as `rememberDevice` (if `screen.showRememberDevice` is true) and other custom options.
   * @returns {Promise<void>} A promise that resolves when the verification attempt is submitted.
   *                          A successful operation typically results in a redirect.
   * @throws {Error} Throws an error if `screen.publicKey` is missing,
   *                 if `navigator.credentials.get()` fails with an unexpected error not handled by `getPasskeyCredentials`,
   *                 or if the form submission to Auth0 fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * try {
   *   const remember = sdk.screen.showRememberDevice && userCheckedRememberDeviceBox;
   *   await sdk.verify({ rememberDevice: remember });
   *   // On success, Auth0 handles redirection.
   * } catch (error) {
   *   console.error("Platform authenticator verification failed:", error);
   *   // If it's a WebAuthn API error, report it
   *   if (error.name && error.message) { // Basic check for DOMException like error
   *     await sdk.reportBrowserError({ error: { name: error.name, message: error.message } });
   *   }
   *   // Check sdk.transaction.errors for server-side validation messages if the page reloads.
   * }
   * ```
   */
  verify(options?: VerifyPlatformAuthenticatorOptions): Promise<void>;

  /**
   * Reports a specific WebAuthn API error (from `navigator.credentials.get()`) to Auth0.
   * This method should be used when `verify()` (or a manual `navigator.credentials.get()` call) fails due to
   * a browser-side WebAuthn issue (e.g., user cancellation `NotAllowedError`, timeout).
   * It submits the error details with `action: "showError::{errorDetailsJsonString}"` and an empty `response`.
   *
   * @param {ReportBrowserErrorOptions} options - Contains the `error` object (with `name` and `message`
   * from the WebAuthn API DOMException) 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 (e.g., network error, invalid state).
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * // And webAuthnDomException is an error object from a failed navigator.credentials.get() call.
   * try {
   *   await sdk.reportBrowserError({
   *     error: { name: webAuthnDomException.name, message: webAuthnDomException.message }
   *   });
   *   // Auth0 will process this error and may re-render the page or redirect.
   * } catch (submitError) {
   *   console.error("Failed to report WebAuthn browser error:", submitError);
   * }
   * ```
   */
  reportBrowserError(options: ReportBrowserErrorOptions): Promise<void>;

  /**
   * Allows the user to opt-out of the WebAuthn platform 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 to be sent with the request.
   * @returns {Promise<void>} A promise that resolves when the 'pick-authenticator' action is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * 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

Screen-specific properties and data, including WebAuthn challenge options and remember device preference.

Methods

reportBrowserError
Promise<void>
Reports a specific WebAuthn API error (from navigator.credentials.get()) to Auth0. This method should be used when verify() (or a manual navigator.credentials.get() call) fails due to a browser-side WebAuthn issue (e.g., user cancellation NotAllowedError, timeout). It submits the error details with action: "showError::{errorDetailsJsonString}" and an empty response.A promise that resolves when the error report is submitted.

Throws

Throws an error if the form submission fails (e.g., network error, invalid state).
Example
// Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
// And webAuthnDomException is an error object from a failed navigator.credentials.get() call.
try {
  await sdk.reportBrowserError({
    error: { name: webAuthnDomException.name, message: webAuthnDomException.message }
  });
  // Auth0 will process this error and may re-render the page or redirect.
} catch (submitError) {
  console.error("Failed to report WebAuthn browser error:", submitError);
}
tryAnotherMethod
Promise<void>
Allows the user to opt-out of the WebAuthn platform 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 ‘pick-authenticator’ action is submitted.

Throws

Throws an error if the form submission fails.
Example
// Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
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 platform authenticator challenge. This method internally calls navigator.credentials.get() using the challenge options provided in screen.publicKey. If successful, it submits the resulting credential to Auth0 with action: "default".If navigator.credentials.get() fails (e.g., user cancellation, timeout, or other WebAuthn API errors), it’s recommended to call reportBrowserError with the error details.A promise that resolves when the verification attempt is submitted. A successful operation typically results in a redirect.

Throws

Throws an error if screen.publicKey is missing, if navigator.credentials.get() fails with an unexpected error not handled by getPasskeyCredentials, or if the form submission to Auth0 fails.
Example
// Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
try {
  const remember = sdk.screen.showRememberDevice && userCheckedRememberDeviceBox;
  await sdk.verify({ rememberDevice: remember });
  // On success, Auth0 handles redirection.
} catch (error) {
  console.error("Platform authenticator verification failed:", error);
  // If it's a WebAuthn API error, report it
  if (error.name && error.message) { // Basic check for DOMException like error
    await sdk.reportBrowserError({ error: { name: error.name, message: error.message } });
  }
  // Check sdk.transaction.errors for server-side validation messages if the page reloads.
}