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

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

# Auth0 Configuration (Applications serveur + API)

Dans cette section, nous examinerons les configurations 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 dans le <Tooltip tip="Auth0 Dashboard : le produit principal d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>. Suivez les instructions dans [Enregistrer des API](/docs/fr-ca/get-started/auth0-overview/set-up-apis) pour configurer l’API Timesheets.

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

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

* Auth0 token profile
* RFC 9068 profile

Par défaut, c’est le profil Auth0 qui est utilisé. La principale différence entre ces deux profils réside dans les noms des claims. Le profil Auth0 utilise `azp` plutôt que `client_id`. Pour en savoir plus sur ces différences, consultez [Access Token Profiles](/docs/fr-ca/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’émetteur du <Tooltip tip="JSON Web Token (JWT) : format standard de jeton d’identification (et souvent de jeton d’accès) utilisé pour représenter des claims de façon sécurisée entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JWT">JWT</Tooltip> est bien celui qu’il prétend être et à s’assurer que le message n’a pas été modifié en cours de route.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La signature fait partie d’un JWT. Si la structure d’un JWT ne vous est pas familière, veuillez consulter [Structure d’un JSON Web Token](/docs/fr-ca/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 indiqué 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 pratique la plus sécuritaire, et celle que nous recommandons, est d’utiliser **RS256**. En 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 le secret est compromis, 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 effectuer une rotation de clé 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 également un scope supplémentaire : `batch:upload`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Dans le cadre de ce document, nous nous intéresserons uniquement au 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="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 automatiquement générée. 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 tout au bout. Renommez l’application `Timesheets Import Job`.

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

<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 Machine to Machine Application.

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

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

Développez les paramètres de l’application en cliquant sur la flèche vers le bas tout à fait à 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 **Update**.

<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="Dashboard - Applications - APIs - Machine to Machine Applications - Authorize" 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 nécessaires du côté d’Auth0, nous pouvons passer à la mise en œuvre.
