> ## 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.

# Obtenir un jeton

> Échanger un code d’autorisation contre des jetons au moyen du flux de code d’autorisation.

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "bêta",
    "ea": "Accès anticipé"
  };
  const stageText = stageTextMap[stage] || "une phase de lancement du produit";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>Cette fonctionnalité est offerte avec les forfaits {linkify(`${plans}`, "https://auth0.com/pricing")}. </>}
            {contact && "Pour y participer, communiquez avec " + contact + ". "}
            {terms && <>En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit énoncées dans le {linkify("Master Subscription Agreement", "https://www.okta.com/legal")} d’Okta.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>La fonctionnalité {feature} est en {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

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 /oauth/token`

Pour l’authentication basée sur des jetons, utilisez le point de terminaison `oauth/token` pour obtenir un jeton d’accès pour votre application afin d’effectuer des requêtes authentifiées vers une API sécurisée. Au besoin, vous pouvez aussi récupérer un jeton d’identité et un jeton d’actualisation. Les jetons d’identité contiennent des renseignements sur l’utilisateur sous forme de scopes que votre application peut extraire afin d’offrir une meilleure expérience utilisateur. Les jetons d’actualisation permettent à votre application de demander un nouveau jeton d’accès lorsque le jeton actuel expire, sans interrompre l’expérience utilisateur. Pour en savoir plus, consultez [ID Tokens](https://auth0.com/docs/secure/tokens/id-tokens) et [Refresh Tokens](https://auth0.com/docs/secure/tokens/refresh-tokens).

Notez que les seuls flux OAuth 2.0 qui permettent de récupérer un jeton d’actualisation sont :

* [Flux de code d’autorisation (Authorization Code)](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow)
* [Flux de code d’autorisation avec PKCE (Authorization Code with PKCE)](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce)
* [Mot de passe du propriétaire de la ressource](https://auth0.com/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow)
* [Flux d’autorisation de l’appareil](https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow)
* Échange de jetons\*

C’est le flux que les applications Web traditionnelles utilisent pour accéder à une API. Utilisez ce point de terminaison pour échanger un code d’autorisation contre un jeton.

<div id="headers">
  ## En-têtes
</div>

<ParamField header="DPoP" type="string">
  Une preuve DPoP associée à la requête. Ce paramètre est facultatif et n’est requis que si votre application utilise Demonstrating Proof-of-Possession.
</ParamField>

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

<div className="prose-sm prose-gray dark:prose-invert">
  <span data-as="p">Le corps de la requête est au format `application/x-www-form-urlencoded`.</span>
</div>

<ParamField body="grant_type" type="string" required>
  Indique le flux que vous utilisez. Pour code d’autorisation, utilisez `authorization_code`.
</ParamField>

<ParamField body="client_id" type="string" required>
  Le Client ID de votre application.
</ParamField>

<ParamField body="client_secret" type="string" required>
  Le Client Secret de votre application.
</ParamField>

<ParamField body="code" type="string" required>
  L’code d’autorisation reçu lors de la requête initiale à `/authorize`.
</ParamField>

<ParamField body="redirect_uri" type="string">
  Ce paramètre est requis seulement s’il a été défini au point de terminaison [GET /authorize](#authorization-code-grant). Les valeurs de `/authorize` doivent correspondre à celle définie à `/oauth/token`.
</ParamField>

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

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    Le jeton d’accès.
  </ResponseField>

  <ResponseField name="refresh_token" type="string">
    Le jeton d’actualisation utilisé pour obtenir de nouveaux jetons d’accès.
  </ResponseField>

  <ResponseField name="id_token" type="string">
    Le jeton d’identité.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    Le type de jeton. Généralement `Bearer`.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La durée de validité du jeton d’accès, en secondes.
  </ResponseField>
</ResponseSchema>

<div id="agent-access-tokens">
  ## Jetons d’accès des agents
</div>

<ReleaseStageNotice feature="Agents en tant que principal" stage="ea" contact="Auth0 Support" terms="true" />

Lorsque l’application qui échange le code d’autorisation est liée à un agent et que les claims de sujet de l’agent sont activés pour l’API cible, le jeton d’accès émis indique l’agent comme acteur au nom de l’utilisateur :

* Le claim `sub` demeure l’identifiant de l’utilisateur. L’identité de l’agent apparaît dans le claim `act`, et non dans `sub`.
* Le claim `act` identifie l’agent : `{ "sub": "agt_72jbvv7LfRKYp59gtRLtkn", "sub_profile": "ai_agent", "client_id": "YOUR_CLIENT_ID", "iss": "https://YOUR_DOMAIN/" }`.
* Le jeton comprend `sub_profile: "user"` et `client_profile` avec le suffixe `ai_agent`, par exemple `web_app ai_agent`.

Si le jeton d’accès contient déjà un acteur issu d’un transfert de session ou d’un échange de jetons On-Behalf-Of, cet acteur prévaut et aucun acteur d’agent n’est ajouté. Ces claims s’appliquent uniquement au jeton d’accès; le jeton d’identité n’est pas affecté. Le schéma de l’objet de réponse demeure inchangé. Pour en savoir plus, consultez [Profils de jetons d’accès](/docs/fr-ca/secure/tokens/access-tokens/access-token-profiles#claims).

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

| Statut | Description                   |
| ------ | ----------------------------- |
| 200    | Récupération réussie du token |
