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

> Configuration d’Auth0 pour le scénario d’architecture Server + API

# Configuration d’Auth0 (applications côté serveur + API)

Dans cette section, nous passerons en revue la configuration d’ExampleCo dans l’[Auth0 Dashboard](https://manage.auth0.com/#).

<div id="configure-the-api">
  ## Configurer l’API
</div>

Pour protéger une API, vous devez l’enregistrer à l’aide de l’<Tooltip tip="Auth0 Dashboard : le produit principal d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>. Suivez les instructions de [Enregistrer des API](/fr-CA/docs/get-started/auth0-overview/set-up-apis) pour configurer l’API Timesheets.

<div id="json-web-token-profile">
  ### Profil JSON Web Token
</div>

<Tooltip tip="Jeton d’accès : identifiant 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=OAuth+2.0">OAuth 2.0</Tooltip> définit les types de profils, ou dialectes, d’un <Tooltip tip="OAuth 2.0 : cadre d’autorisation qui définit les protocoles et les flux d’autorisation." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=access+token">jeton d’accès</Tooltip>. Auth0 prend en charge deux profils différents :

* Profil de jeton Auth0
* Profil RFC 9068

Par défaut, le profil Auth0 est utilisé. La principale différence entre ces deux profils tient aux noms des revendications. Le profil Auth0 utilise `azp` plutôt que `client_id`. Pour en savoir plus sur les différences, consultez [Profils de jeton d’accès](/fr-CA/docs/secure/tokens/access-tokens/access-token-profiles).

<div id="signing-algorithms">
  ### Algorithmes de signature
</div>

Lorsque vous créez une API, vous devez sélectionner l’algorithme avec lequel vos jetons seront signés. La signature sert à vérifier que l’expéditeur du <Tooltip tip="JSON Web Token (JWT) : format standard d’ID Token (et souvent de Jeton 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> est bien celui qu’il prétend être et à s’assurer que le message n’a pas été modifié pendant le transit.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La signature fait partie d’un JWT. Si vous ne connaissez pas bien la structure d’un JWT, consultez [la structure d’un JSON Web Token](/fr-CA/docs/secure/tokens/json-web-tokens/json-web-token-structure).
</Callout>

Pour créer la signature, vous devez prendre l’en-tête encodé, le payload encodé, un secret, l’algorithme précisé dans l’en-tête, puis signer le tout. Cet algorithme, qui fait partie de l’en-tête du JWT, est celui que vous sélectionnez pour votre API : `HS256,` `RS256,` ou `PS256`.

La méthode la plus sécuritaire, et celle que nous recommandons, est d’utiliser **RS256**. Voici quelques raisons :

* Avec RS256, vous avez l’assurance que seul le détenteur de la clé privée (Auth0) peut signer des jetons, tandis que n’importe qui peut vérifier la validité du jeton à l’aide de la clé publique.
* Avec HS256, si la clé privée est compromise, vous devrez redéployer l’API avec le nouveau secret. Avec RS256, vous pouvez demander un jeton valide pour plusieurs audiences.
* Avec RS256, vous pouvez mettre en œuvre la rotation des clés sans avoir à redéployer l’API avec le nouveau secret.

<div id="configure-the-scopes">
  ## Configurer les Scopes
</div>

Dans les paramètres de votre API, vous devrez configurer les Scopes que les applications peuvent demander lors de l’autorisation. Accédez à l’onglet Permissions.

Dans cette section, vous pouvez ajouter les quatre scopes mentionnés précédemment : `batch:upload`, `read:timesheets`, `create:timesheets`, `delete:timesheets` et `approve:timesheets`. Ajoutez aussi un scope supplémentaire : `batch:upload`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Dans le cadre de ce document, nous nous concentrerons uniquement sur le scope `batch:upload`, car c’est le seul requis par la tâche cron. Toutefois, par souci d’exhaustivité, nous ajoutons les scopes nécessaires qui seront requis par de futures applications.
</Callout>

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=984a687f31394ba988ee0fab7d17cbd6" alt="Auth0 Dashboard > APIs > Permissions" data-og-width="1052" width="1052" data-og-height="916" height="916" data-path="docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=280&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=05b898db508fefe58f8bd0772a2b8524 280w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=560&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=46fb3e9f26d4c510520fb22c3e3f384f 560w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=840&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ad8d50ab117ebfcf15912063db00223b 840w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1100&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=2e8baf95a9cb5458e18a3e33f85d1907 1100w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1650&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=35936c5bcb16f76e20050277830c5a85 1650w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=2500&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=142c44e382cef4c14693c8c5de2a007f 2500w" />
</Frame>

<div id="create-the-application">
  ## Créer l’application
</div>

Lors de la création d’une API dans l’Auth0 Dashboard, une application de test pour l’API est générée automatiquement. Dans l’Auth0 Dashboard, accédez à la [section Applications](https://manage.auth0.com/#/applications), et vous verrez l’application de test pour l’API Timesheets.

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ea4f117201217b98bdc02e90814df66a" alt="undefined" width="1552" height="760" data-path="docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png" />
</Frame>

Accédez aux paramètres de l’application en sélectionnant l’option de menu à l’extrémité droite. Renommez l’application en `Timesheets Import Job`.

Pour la tâche cron, vous aurez besoin d’une application Machine-to-Machine. L’application de test générée lors de la création de l’API a été automatiquement configurée comme application Machine-to-Machine.

<div id="configure-applications-access-to-the-api">
  ## Configurer l’accès de l’application à l’API
</div>

Enfin, vous devez autoriser l’application à accéder à l’API Timesheets. Retournez à la configuration de l’API, puis sélectionnez l’onglet Applications machine à machine.

Vous verrez l’application **Timesheets Import Job** dans la liste, et elle devrait avoir accès à l’API, comme l’indique le bouton bascule à droite du nom de l’application, qui affiche la valeur `Authorized`. Si ce n’est pas le cas, faites simplement passer la valeur du bouton bascule de `Unauthorized` à `Authorized`.

Vous devrez également préciser quels scopes seront inclus dans les jetons d’accès émis à l’application lorsque celle-ci s’authentifie auprès d’Auth0.

Développez les paramètres de l’application en cliquant sur la flèche vers le bas tout à droite, et vous verrez la liste des scopes disponibles. La tâche cron n’aura besoin que du scope `batch:upload`, puisqu’elle créera simplement de nouvelles feuilles de temps à partir des entrées de feuille de temps du système externe.

Une fois le scope `batch:upload` sélectionné, enregistrez les paramètres en cliquant sur le bouton **Mettre à jour**.

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=db0b66c6d8c01df1ef00ff3b8bf2c3e9" alt="Auth0 Dashboard - Applications - APIs - Applications machine à machine - Autoriser" width="898" height="1274" data-path="docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png" />
</Frame>

Maintenant que nous avons conçu notre solution et examiné les configurations requises du côté d’Auth0, nous pouvons passer à l’implémentation.
