> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/llms.txt
> Use this file to discover all available pages before exploring further.

# ResetPasswordMfaWebAuthnRoamingChallenge

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/generaltranslationinc/GMqg_oKRfWVB3GIg/docs/images/cdy7uua7fh8z/oisvWlYTRgpQ030322WZk/23921a030cdb6f1cf7b147da5315ea8e/Screenshot_2025-05-28_at_13.12.43.png?fit=max&auto=format&n=GMqg_oKRfWVB3GIg&q=85&s=d83e86462bb54cb139f621261c049f1c" alt="" width="363" height="492" data-path="docs/images/cdy7uua7fh8z/oisvWlYTRgpQ030322WZk/23921a030cdb6f1cf7b147da5315ea8e/Screenshot_2025-05-28_at_13.12.43.png" />
</Frame>

ResetPasswordMfaWebAuthnRoamingChallenge

```ts Example theme={null}
// In your UI component for the reset-password-mfa-webauthn-roaming-challenge screen:
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 });
    // On success, Auth0 typically handles redirection.
  } catch (err) {
    console.error("Security key authentication failed:", err);
    // If it's a WebAuthn API error, report it to Auth0
    if (err.name && err.message) { // Basic check for DOMException-like error
      try {
        await sdk.showError({ error: { name: err.name, message: err.message } });
      } catch (reportError) {
        console.error("Failed to report WebAuthn error:", reportError);
      }
    }
    // Mettez à jour l'interface utilisateur pour informer l'utilisateur, par exemple : « La vérification de la clé de sécurité a échoué. Veuillez réessayer. »
    // Also check `sdk.transaction.errors` if the page might have reloaded with an error message from the server.
  }
}
```

<div id="constructors">
  ## Constructeurs
</div>

<ParamField body="ResetPasswordMfaWebAuthnRoamingChallenge" type="Constructor">
  Initialise une nouvelle instance de la classe `ResetPasswordMfaWebAuthnRoamingChallenge`.
  Elle récupère le contexte nécessaire (écran, transaction, etc.) à partir du contexte global.

  #### Exceptions

  Si le contexte Universal Login n'est pas disponible ou si le nom de l'écran
  dans le contexte ne correspond pas à `ResetPasswordMfaWebAuthnRoamingChallenge.screenIdentifier`.
</ParamField>

<div id="properties">
  ## Propriétés
</div>

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ScreenMembersOnResetPasswordMfaWebAuthnRoamingChallenge">ScreenMembersOnResetPasswordMfaWebAuthnRoamingChallenge</a></span>}>
  Contient les données et les propriétés spécifiques à cet écran,

  (pour le défi WebAuthn) ainsi que `showRememberDevice`.
</ParamField>

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TransactionMembers">TransactionMembers</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UserMembers">UserMembers</a></span>} />

<ParamField body="screenIdentifier" type="string">
  Identifiant unique de cet écran, utilisé pour la logique interne du SDK et la télémétrie.
</ParamField>

<div id="methods">
  ## Méthodes
</div>

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  Récupère le tableau des erreurs de transaction à partir du contexte, ou un tableau vide s’il n’en existe aucune.

  Un tableau d’objets d’erreur provenant du contexte de la transaction.
</ParamField>

<ParamField body="showError" type="Promise<void>">
  Signale à Auth0 une erreur de l’API WebAuthn côté client (provenant de `navigator.credentials.get()`).
  Cette méthode doit être appelée lorsque [useSecurityKey](#usesecuritykey) (ou un appel direct à
  `navigator.credentials.get()`) échoue en raison d’une erreur standard de l’API WebAuthn
  (par exemple, `NotAllowedError` si l’utilisateur annule, `NotFoundError`, `SecurityError`, délai d’expiration).
  Elle soumet les détails de l’erreur avec `action: "showError::{errorDetailsJsonString}"` et une `response` vide.

  Une promesse qui se résout lorsque le rapport d’erreur est soumis avec succès.
  Auth0 peut alors réafficher la page avec des messages d’erreur précis dans `this.transaction.errors` ou effectuer une redirection.

  #### Lève

  Lève une erreur si la soumission du formulaire en tant que telle échoue (par exemple, erreur réseau, état non valide).

  ```typescript Example theme={null}
  // Dans votre interface, après avoir intercepté une erreur provenant de `sdk.useSecurityKey()` ou `navigator.credentials.get()` :
  if (webAuthnError instanceof DOMException) {
    await sdk.showError({
      error: { name: webAuthnError.name, message: webAuthnError.message },
      rememberDevice: userWantsToRemember // le cas échéant
    });
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeShowErrorOptions">ResetPasswordMfaWebAuthnRoamingChallengeShowErrorOptions</a></span>}>
      **Propriétés**

      <ParamField body="rememberDevice?" type="boolean" />
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="tryAnotherMethod" type="Promise<void>">
  Permet à l’utilisateur de se soustraire au défi de l’authentificateur WebAuthn itinérant et de choisir une autre méthode d’authentification multifacteur (AMF).
  Cette action soumet `action: "pick-authenticator"` à Auth0, ce qui doit amener
  l’utilisateur vers un écran de sélection du facteur d’AMF.

  Une promesse qui se résout lorsque l’action `pick-authenticator` est soumise.

  #### Lève

  Lève une erreur si la soumission du formulaire échoue (par exemple, erreur réseau, état non valide).

  ```typescript Example theme={null}
  // Lorsque l’utilisateur clique sur un bouton « Essayer une autre méthode » :
  await sdk.tryAnotherMethod({ rememberDevice: userWantsToRemember });
  // Auth0 gère la redirection vers l’écran de sélection de l’AMF.
  ```

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeTryAnotherMethodOptions">ResetPasswordMfaWebAuthnRoamingChallengeTryAnotherMethodOptions</a></span>}>
      **Propriétés**

      <ParamField body="rememberDevice?" type="boolean" />
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="useSecurityKey" type="Promise<void>">
  Lance le défi de clé de sécurité WebAuthn.
  Cette méthode appelle en interne `navigator.credentials.get()` en utilisant les options
  de défi fournies dans `this.screen.publicKey`.
  Si l'utilisateur s'authentifie avec succès à l'aide de sa clé de sécurité, le
  `PublicKeyCredential` résultant est sérialisé en chaîne et envoyé à Auth0 avec `action: "default"`.

  Une promesse qui est résolue lorsque la tentative de vérification est envoyée.
  Une opération réussie entraîne généralement une redirection de l'utilisateur par Auth0.

  <div id="throws">
    #### Lève des exceptions
  </div>

  Lève une erreur si `this.screen.publicKey` est absent (ce qui indique l'absence d'options de défi),
  si `getPasskeyCredentials` (qui encapsule `navigator.credentials.get()`) échoue (p. ex. annulation par l'utilisateur,
  aucun authentificateur trouvé, erreur matérielle), ou si l'envoi final du formulaire à Auth0 échoue.
  Il est essentiel d'intercepter les erreurs de cette méthode. Les erreurs de l'API WebAuthn (comme `NotAllowedError`)
  doivent être signalées à l'aide de [showError](#showerror).

  ```typescript Example theme={null}
  // Dans votre composant d'interface utilisateur pour l’écran reset-password-mfa-webauthn-roaming-challenge :
  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 });
      // En cas de succès, Auth0 gère généralement la redirection.
    } catch (err) {
      console.error("Security key authentication failed:", err);
      // S'il s'agit d'une erreur de l'API WebAuthn, signalez-la à Auth0
      if (err.name && err.message) { // Vérification de base pour une erreur de type DOMException
        try {
          await sdk.showError({ error: { name: err.name, message: err.message } });
        } catch (reportError) {
          console.error("Failed to report WebAuthn error:", reportError);
        }
      }
      // Mettez à jour l’interface pour informer l’utilisateur, par exemple : "Security key verification failed. Please try again."
      // Vérifiez aussi `sdk.transaction.errors` si la page a pu être rechargée avec un message d’erreur provenant du serveur.
    }
  }
  ```

  <Expandable title="Paramètres">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeUseSecurityKeyOptions">ResetPasswordMfaWebAuthnRoamingChallengeUseSecurityKeyOptions</a></span>}>
      **Propriétés**

      <ParamField body="rememberDevice?" type="boolean" />
    </ParamField>
  </Expandable>
</ParamField>
