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

# Demande de défi

> Demandez un défi MFA (OTP ou OOB) pour poursuivre l’authentification au point de terminaison de jeton.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Point de terminaison
</div>

`POST /mfa/challenge`

Les points de terminaison de l’API d’authentification multifacteur (MFA) vous permettent d’imposer l’authentification multifacteur lorsque les utilisateurs interagissent avec [les points de terminaison de jeton](#get-token), ainsi que d’inscrire et de gérer les authentificateurs des utilisateurs.

Commencez par demander un défi d’authentification en fonction des types de défi pris en charge par l’application et l’utilisateur. Si vous savez que l’OTP est pris en charge, vous pouvez ignorer la demande de défi.

Ensuite, validez l’authentification multifacteur à l’aide du point de terminaison `/oauth/token` et du type de défi spécifié : un OTP, un code de récupération ou un défi hors bande (OOB).

Pour en savoir plus, consultez :

* [Authentification multifacteur et Resource Owner Password](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)
* [API d’authentification multifacteur](https://auth0.com/docs/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/mfa-api)
* [Authentification multifacteur dans Auth0](https://auth0.com/docs/secure/multi-factor-authentication)

<div id="challenge-request">
  ## Demande de défi
</div>

Demandez un défi d’authentification multifacteur (MFA) selon les types de défi pris en charge par l’application et l’utilisateur.

Le `challenge_type` indique comment l’utilisateur recevra le défi et prouvera qu’il en a la possession. Les types de défi pris en charge comprennent :

* `otp` : pour un mot de passe à usage unique (OTP)
* `oob` : pour les messages SMS/vocaux ou hors bande (OOB)

Si l’OTP est pris en charge pour l’utilisateur et que vous ne souhaitez pas demander un autre facteur, vous pouvez ignorer la demande de défi et [vérifier l’authentification multifacteur au moyen d’un OTP](#verify-with-one-time-password-otp-).

<div id="remarks">
  ### Remarques
</div>

* Ce point de terminaison ne prend pas en charge l’inscription; l’utilisateur doit déjà être inscrit avec la méthode privilégiée avant de demander un défi.
* Auth0 choisit le type de défi en fonction des types pris en charge par l’application et de ceux auxquels l’utilisateur est inscrit.
* Une erreur `unsupported_challenge_type` est renvoyée si votre application ne prend en charge aucun des types de défi auxquels l’utilisateur est inscrit.
* Une erreur `unsupported_challenge_type` est renvoyée si l’utilisateur n’est pas inscrit.
* Si l’utilisateur n’est pas inscrit, vous obtiendrez une erreur `association_required`, indiquant que l’utilisateur doit s’inscrire pour utiliser l’authentification multifacteur (MFA). Lisez [Ajouter un authentificateur](/fr-CA/multi-factor-authentication/add-an-authenticator) ci-dessous pour savoir comment procéder.

<div id="learn-more">
  ### En savoir plus
</div>

* [S’authentifier avec le flux d’octroi du mot de passe du propriétaire de la ressource et la MFA](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)
* [Gérer les facteurs d’authentification avec l’API MFA](https://auth0.com/docs/secure/multi-factor-authentication/manage-mfa-auth0-apis/manage-authenticator-factors-mfa-api)

<div id="body-parameters">
  ## Paramètres du corps
</div>

<ParamField body="mfa_token" type="string" required>
  Le jeton reçu dans l’erreur mfa\_required.
</ParamField>

<ParamField body="client_id" type="string" required>
  L’ID client de votre application.
</ParamField>

<ParamField body="client_secret" type="string">
  Le secret client de votre application.
</ParamField>

<ParamField body="challenge_type" type="string">
  Une liste de types de défi acceptés par votre application, séparés par des espaces.

  Valeurs autorisées : `oob`, `otp`
</ParamField>

<ParamField body="client_assertion" type="string">
  Un JWT contenant une assertion signée avec les identifiants de votre application.
</ParamField>

<ParamField body="client_assertion_type" type="string">
  La valeur est urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
</ParamField>

<ParamField body="authenticator_id" type="string">
  L’ID de l’authentificateur à utiliser pour le défi.
</ParamField>

<div id="response-schema">
  ## Schéma de réponse
</div>

<ResponseSchema statusCode="200">
  <ResponseField name="challenge_type" type="string">
    Le type de défi généré par cet authentificateur. Valeurs possibles : `otp`, `oob`.
  </ResponseField>

  <ResponseField name="oob_code" type="string">
    Le code du défi hors bande. Présent uniquement lorsque `challenge_type` est `oob`.
  </ResponseField>

  <ResponseField name="binding_method" type="string">
    La méthode de liaison utilisée. Présente uniquement lorsque cela s’applique. Valeurs possibles : `prompt`.
  </ResponseField>
</ResponseSchema>

<ResponseSchema statusCode="400">
  <ResponseField name="error" type="string">
    Code d’erreur.
  </ResponseField>

  <ResponseField name="error_description" type="string">
    Description détaillée de l’erreur.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Messages de réponse
</div>

| Statut | Description                                                                                    |
| ------ | ---------------------------------------------------------------------------------------------- |
| 200    | Requête de défi réussie                                                                        |
| 400    | Requête invalide, par exemple un type de défi non pris en charge ou une inscription manquante. |
