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

> Découvrez comment le pipeline conforme à OIDC d’Auth0 modifie le comportement du flux implicite et met à jour les applications existantes sans perturber la gestion des jetons.

# Flux implicite avec OIDC

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASQUÉ*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Traditionnellement, le [flux implicite](/docs/fr-ca/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post) était utilisé par les applications qui n’étaient pas en mesure de stocker des secrets de façon sécuritaire. L’utilisation de ce flux n’est plus considérée comme une pratique exemplaire pour demander des <Tooltip tip="Jeton d’accès : justificatif d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisé pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=access+tokens">jetons d’accès</Tooltip> ; les nouvelles mises en œuvre devraient plutôt utiliser le [flux de code d’autorisation avec PKCE](/docs/fr-ca/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce). Toutefois, lorsqu’il est utilisé avec le mode de réponse Form Post, le flux implicite offre bel et bien un flux de travail simplifié si l’application n’a besoin que d’un <Tooltip tip="Jeton d’accès : justificatif d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisé pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+token">jeton d’ID</Tooltip> pour authentifier l’utilisateur; dans ce cas, il serait utilisé dans le cadre du [flux hybride](/docs/fr-ca/get-started/authentication-and-authorization-flow/hybrid-flow).

<Tooltip tip="Jeton d’actualisation : jeton utilisé pour obtenir un jeton d’accès renouvelé sans obliger les utilisateurs à se connecter de nouveau." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Refresh+tokens">Les jetons d’actualisation</Tooltip> ne seront plus renvoyés lors de l’utilisation du flux implicite pour l’authentification.

De plus, le pipeline conforme à OIDC a une incidence sur le flux implicite dans les domaines suivants : la requête d’authentification, la réponse d’authentification, la structure du jeton d’ID et la structure du jeton d’accès.

<div id="authentication-request">
  ## Requête d’authentification
</div>

<div id="legacy">
  ### version antérieure
</div>

```http lines theme={null}
GET /authorize?
    response_type=token
    &scope=openid email favorite_color offline_access
    &client_id=123
    &state=af0ifjsldkj
    &redirect_uri=https://app.example.com
    &device=my-device-name
```

Le paramètre `device` n’est nécessaire que si vous demandez un jeton d’actualisation en incluant la portée `offline_access`. Pour en savoir plus, consultez [Jetons d’actualisation](/docs/fr-ca/secure/tokens/refresh-tokens).

<div id="oidc-conformant">
  ### conforme à OIDC
</div>

```http lines theme={null}
GET /authorize?
    response_type=token id_token
    &scope=openid email
    &client_id=123
    &state=af0ifjsldkj
    &nonce=jxdlsjfi0fa
    &redirect_uri=https://app.example.com
    &audience=https://api.example.com
```

* `response_type` indique que nous voulons recevoir à la fois un jeton d’accès et un jeton d’ID.
* Les jetons d’actualisation ne sont pas pris en charge dans le flux implicite. Utilisez plutôt `prompt=none`. Pour en savoir plus, consultez [Configurer l’authentification silencieuse](/docs/fr-ca/authenticate/login/configure-silent-authentication).
* `favorite_color` n’est plus un scope valide.
* `audience` est facultatif.
* `nonce` doit être une chaîne aléatoire sécurisée sur le plan cryptographique. Pour en savoir plus, consultez [Atténuer les attaques par rejeu lors de l’utilisation du flux implicite](/docs/fr-ca/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/mitigate-replay-attacks-when-using-the-implicit-flow).

<div id="authentication-response">
  ## Réponse d’authentification
</div>

### Version antérieure

```json lines theme={null}
HTTP/1.1 302 Found
Location: https://app.example.com/#
    access_token=SlAV32hkKG
    &expires_in=86400
    &state=af0ifjsldk
    &id_token=eyJ...
    &refresh_token=8xLOxBtZp8
    &token_type=Bearer
```

* Le jeton d’accès renvoyé est valide pour appeler le point de terminaison [`/userinfo`](https://auth0.com/docs/api/authentication#get-user-info).
* Un jeton d’actualisation n’est renvoyé que si un paramètre `device` a été transmis et si la portée `offline_access` a été demandée.

### Conforme à OIDC

```json lines theme={null}
HTTP/1.1 302 Found
Location: https://app.example.com/#
    access_token=eyJ...
    &expires_in=86400
    &state=af0ifjsldk
    &id_token=eyJ...
    &token_type=Bearer
```

* Le jeton d’accès renvoyé est valide pour appeler le point de terminaison [`/userinfo`](https://auth0.com/docs/api/authentication#get-user-info) (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` comme [algorithme de signature](/docs/fr-ca/get-started/applications/signing-algorithms)) et, au besoin, le <Tooltip tip="Serveur de ressources : serveur hébergeant des ressources protégées. Les serveurs de ressources acceptent les requêtes visant des ressources protégées et y répondent." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=resource+server">serveur de ressources</Tooltip> spécifié par le paramètre `audience`.
* Si vous utilisez `response_type=id_token`, Auth0 renverra uniquement un jeton d’ID.
  Les jetons d’actualisation ne sont pas autorisés dans l’Implicit grant. Utilisez plutôt `prompt=none`.

<div id="id-token-structure">
  ## Structure du jeton d’ID
</div>

### Version antérieure

export const codeExample1 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "favorite_color": "blue"
}`;

<AuthCodeBlock children={codeExample1} language="json" filename="JSON" />

### Conforme à OIDC

export const codeExample2 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "https://app.example.com/favorite_color": "blue",
    "nonce": "jxdlsjfi0fa"
}`;

<AuthCodeBlock children={codeExample2} language="json" filename="JSON" />

* Le claim `favorite_color` doit être muni d’un espace de noms et ajouté au moyen d’une rule. Pour en savoir plus, consultez [Créer des custom claims avec espace de noms](/docs/fr-ca/secure/tokens/json-web-tokens/create-custom-claims).
* Après avoir validé le jeton d’ID, l’application doit valider le <Tooltip tip="Nonce : nombre arbitraire émis une seule fois dans un protocole d’authentification pour détecter et prévenir les attaques par rejeu." cta="Consulter le glossaire" href="/docs/fr-ca/glossary?term=nonce">nonce</Tooltip> afin d’atténuer les attaques par rejeu.

<div id="access-token-structure-optional">
  ## Structure du jeton d’accès (facultatif)
</div>

<div id="legacy">
  ### version antérieure
</div>

```bash HTTP lines theme={null}
SlAV32hkKG
```

Le jeton d’accès renvoyé est opaque et n’est valide que pour effectuer une requête au point de terminaison `/userinfo`.

### Conforme à OIDC

export const codeExample3 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": [
        "https://api.example.com",
        "https://{yourDomain}/userinfo"
    ],
    "azp": "123",
    "exp": 1482816809,
    "iat": 1482809609,
    "scope": "openid email"
}`;

<AuthCodeBlock children={codeExample3} language="json" filename="JSON" />

* Le jeton d’accès renvoyé est un <Tooltip tip="JSON Web Token (JWT) : format standard des ID Token (et souvent des Access Token) utilisé pour représenter des claims de manière sécurisée entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JWT">JWT</Tooltip> valide pour appeler le endpoint `/userinfo` (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` comme [algorithme de signature](/docs/fr-ca/get-started/applications/change-application-signing-algorithms)), ainsi que le serveur de ressources spécifié par le paramètre `audience`.
* Un jeton d’accès opaque peut tout de même être renvoyé si `/userinfo` est la seule <Tooltip tip="Audience : identificateur unique de l’audience d’un token émis. Nommée aud dans un token, sa valeur contient l’ID d’une application (Client ID) pour un ID Token ou d’une API (API Identifier) pour un Access Token." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=audience">audience</Tooltip> spécifiée.

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

* [Jetons d’accès avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-access-tokens)
* [API externes avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-apis)
* [Flux de code d’autorisation avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-auth-code-flow)
* [Flux des informations d’identification du client avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-client-credentials-flow)
* [Délégation avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-delegation)
* [Jetons d’actualisation avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-refresh-tokens)
