> ## 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 à la norme OIDC a une incidence sur le flux implicite.

# 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) + "*****MASKED*****";
          }
          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](/fr-CA/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post) était utilisé par les applications qui ne pouvaient pas stocker des secrets de façon sécurisée. L’utilisation de ce flux n’est plus considérée comme une bonne pratique 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="/fr-CA/docs/glossary?term=access+tokens">jetons d’accès</Tooltip> ; les nouvelles implémentations devraient utiliser le [flux de code d’autorisation avec PKCE](/fr-CA/docs/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 un processus simplifié si l’application a seulement besoin 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="/fr-CA/docs/glossary?term=ID+token">jeton d’identité</Tooltip> pour authentifier l’utilisateur ; dans ce cas, il est utilisé dans le cadre du [flux hybride](/fr-CA/docs/get-started/authentication-and-authorization-flow/hybrid-flow).

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

De plus, le pipeline conforme à la norme 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’identité et la structure du jeton d’accès.

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

### Ancien

```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 requis que si vous demandez un jeton d’actualisation en incluant le scope `offline_access`. Pour en savoir plus, consultez [Jetons d’actualisation](/fr-CA/docs/secure/tokens/refresh-tokens).

<div id="oidc-conformant">
  ### Conforme à la norme 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’identité.
* Les jetons d’actualisation ne sont pas autorisés dans le flux implicite. Utilisez plutôt `prompt=none`. Pour en savoir plus, consultez [Configure Silent Authentication](/fr-CA/docs/authenticate/login/configure-silent-authentication).
* `favorite_color` n’est plus un scope valide.
* `audience` est facultatif.
* `nonce` doit être une chaîne aléatoire cryptographiquement sûre. Pour en savoir plus, consultez [Mitigate Replay Attacks When Using the Implicit Flow](/fr-CA/docs/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>

### ancien

```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 le scope `offline_access` a été demandé.

<div id="oidc-conformant">
  ### Conforme à la norme OIDC
</div>

```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é permet d’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](/fr-CA/docs/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 demandes de ressources protégées et y répondent." cta="Voir le glossaire" href="/fr-CA/docs/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’identité.
  Les jetons d’actualisation ne sont pas autorisés dans le flux implicite. Utilisez plutôt `prompt=none`.

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

### Ancien

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" />

<div id="oidc-conformant">
  ### Conforme à la norme OIDC
</div>

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" />

* La revendication `favorite_color` doit être associée à un espace de noms et ajoutée au moyen d’une Rule. Pour en savoir plus, consultez [Créer des revendications personnalisées avec espace de noms](/fr-CA/docs/secure/tokens/json-web-tokens/create-custom-claims).
* Après avoir validé le jeton d’identité, l’application doit valider le <Tooltip tip="Nonce : Valeur arbitraire générée une seule fois dans un protocole d’authentification pour détecter et prévenir les attaques par rejeu." cta="Voir le glossaire" href="/fr-CA/docs/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 (facultative)
</div>

<div id="legacy">
  ### Mode ancien
</div>

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

Le jeton d’accès renvoyé est opaque et n’est valide que pour appeler le point de terminaison `/userinfo`.

<div id="oidc-conformant">
  ### Conforme à la norme OIDC
</div>

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 jetons d’accès) utilisé pour représenter de façon sécurisée des claims entre deux parties." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=JWT">JWT</Tooltip> valide pour appeler le point de terminaison `/userinfo` (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` comme [algorithme de signature](/fr-CA/docs/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 : identifiant unique de l’audience d’un jeton émis. Nommée aud dans un jeton, sa valeur contient l’ID d’une application (ID client) pour un ID Token ou d’une API (identifiant d’API) pour un jeton d’accès." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=audience">audience</Tooltip> spécifiée.

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

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