> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-chore-myaccount-api-autoupdate.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/#).

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

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.

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

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

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

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.

<h2 id="configure-the-scopes">
  Configurer les scopes
</h2>

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/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=259ae8e0ac24ad2647d7f8734bb8c7d7" 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/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=280&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=ced50e1334b525e7fb99827788bbe0d0 280w, https://mintcdn.com/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=560&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=9487dd42027842fc0f5bb3df19fe32e0 560w, https://mintcdn.com/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=840&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=17452441067cf85936090d7818488825 840w, https://mintcdn.com/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1100&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=be50db9223205f412a138a211850a3da 1100w, https://mintcdn.com/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1650&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=31823ac4028d334ccae09089e3c4a43d 1650w, https://mintcdn.com/docs-dev-chore-myaccount-api-autoupdate/TwrLWOmtEE_zyIZg/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=2500&fit=max&auto=format&n=TwrLWOmtEE_zyIZg&q=85&s=d0601b07e9c529567e2b984df52d78ae 2500w" />
</Frame>

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

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/docs-dev-chore-myaccount-api-autoupdate/0pc0J-xi5wIlMd5V/docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png?fit=max&auto=format&n=0pc0J-xi5wIlMd5V&q=85&s=31c9550819d175f0901ffafb91c6877b" 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.

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

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/docs-dev-chore-myaccount-api-autoupdate/xjbLFTbb3mNkqhP2/docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png?fit=max&auto=format&n=xjbLFTbb3mNkqhP2&q=85&s=a5e4ed5646ee51992d7ff2954f330cc2" 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.
