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

> Utilisez les Actions Auth0 pour étendre le contrôle d’accès basé sur les rôles avec une logique personnalisée, évaluer les rôles des utilisateurs lors de la connexion et ajouter ou supprimer des permissions de jeton d’accès.

# Exemples de cas d’utilisation : Actions avec autorisation

Les [Actions](/docs/fr-ca/customize/actions) d’Auth0 vous permettent de modifier ou de compléter le résultat d’une décision prise par une [politique d’autorisation](/docs/fr-ca/manage-users/access-control/authorization-policies) préconfigurée, afin de gérer des cas plus complexes que ceux que le [contrôle d’accès basé sur les rôles (RBAC)](/docs/fr-ca/manage-users/access-control/rbac) seul permet de couvrir. Selon l’ordre dans lequel elles s’exécutent, les Actions peuvent modifier le résultat d’une décision d’autorisation avant que des permissions ne soient ajoutées au <Tooltip tip="Jeton d’accès : informations d’identification d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisées pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Access+Token">jeton d’accès</Tooltip>. Elles vous permettent aussi de personnaliser le contenu de vos jetons.

<div id="allow-access-only-on-weekdays-for-a-specific-application">
  ## Autoriser l’accès uniquement les jours de semaine pour une application donnée
</div>

Supposons que vous ayez une application et que vous vouliez vous assurer qu’elle n’est accessible qu’en semaine. [Créez une nouvelle Action](/docs/fr-ca/customize/actions/write-your-first-action), puis sélectionnez le déclencheur `Login / Post Login`, puisque vous ajouterez l’Action au flux Login. Copiez le code suivant dans l’éditeur de code Actions :

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const d = new Date().getDay();

    if (d === 0 || d === 6) {
      api.access.deny("This app is only available during the week.");
    }
  }
}
```

Enfin, ajoutez l’Action que vous avez créée au [flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment associer des Actions à des Flows, consultez la section "Associer l’Action à un flow" de [Créez votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).

Si un utilisateur tente d’accéder à l’application pendant la fin de semaine, l’accès lui sera refusé, même s’il s’authentifie et possède les privilèges appropriés.

<div id="allow-access-only-to-users-who-are-inside-the-corporate-network">
  ## Autoriser l’accès uniquement aux utilisateurs qui se trouvent sur le réseau d’entreprise
</div>

Supposons que vous vouliez autoriser l’accès à une application, mais seulement aux utilisateurs qui y accèdent depuis votre réseau d’entreprise. [Créez une nouvelle Action](/docs/fr-ca/customize/actions/write-your-first-action) et sélectionnez le trigger `Login / Post Login`, puisque vous ajouterez l’Action au Login flow. Copiez le code suivant dans l’éditeur de code Actions :

```js lines theme={null}
const ipaddr = require("ipaddr.js");

exports.onExecutePostLogin = async (event, api) => {
  const corpNetwork = "192.168.1.134/26";
  const currentIp = ipaddr.parse(event.request.ip);

  if (!currentIp.match(ipaddr.parseCIDR(corpNetwork))) {
    api.access.deny("This app is only available from inside the corporate network.");
  };
};
```

Enfin, ajoutez l’Action que vous avez créée au [flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment associer des Actions à des flux, consultez la section "associer l’Action à un flux" dans [Créer votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).

Si l’utilisateur se trouve à l’extérieur du réseau d’entreprise, l’accès lui sera refusé même s’il s’authentifie avec succès et possède les privilèges appropriés.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Pour utiliser une bibliothèque `npm` comme `ipaddr.js`, vous devez l’ajouter comme dépendance à l’Action. Pour en savoir plus, consultez la section "Ajouter une dépendance" dans [Créer votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).
</Callout>

<div id="deny-access-to-anyone-calling-an-api">
  ## Rejeter l’accès à toute personne qui fait une requête à une API
</div>

Supposons que vous souhaitiez rejeter l’accès à tous les utilisateurs qui font une requête à une API. Cela signifie que vous devez rejeter l’accès selon la valeur `identifier` de votre API, que vous trouverez dans le champ **API <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>** de votre API sous [Auth0 Dashboard > Applications > APIs](https://manage.auth0.com/#/apis). [Créez une nouvelle Action](/docs/fr-ca/customize/actions/write-your-first-action), puis sélectionnez le Trigger `Login / Post Login`, car vous ajouterez l’Action au flux Login. Copiez le code suivant dans l’éditeur de code Actions :

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // Dans Actions, une API est désignée comme un Resource Server.
  const { identifier } = event.resource_server || {};
  if (identifier === "https://api.example.com") {
    api.access.deny("end_users_not_allowed");
  }
}
```

Enfin, ajoutez l’Action que vous avez créée au [flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment associer des Actions à des Flows, consultez la section "associer l’Action à un flux" de [créer votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).

Dans ce cas, la valeur `identifier` de l’API est `https://api.example.com`; il s’agit donc de l’audience que nous refuserons.

<div id="add-user-roles-to-tokens">
  ## Ajouter des rôles utilisateur aux jetons
</div>

Pour ajouter des rôles utilisateur aux jetons émis par Auth0, utilisez l’objet `event.authorization` ainsi que les méthodes `api.idToken.setCustomClaim` et `api.accessToken.setCustomClaim`. [Créez une nouvelle Action](/docs/fr-ca/customize/actions/write-your-first-action), puis sélectionnez le déclencheur `Login / Post Login`, puisque vous ajouterez l’Action au flux de connexion. Copiez le code suivant dans l’éditeur de code Actions :

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://my-app.example.com';
  if (event.authorization) {
    api.idToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
    api.accessToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
  }
}
```

Enfin, ajoutez l’Action que vous avez créée au [flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment associer des Actions à des flux, consultez la section "Associer l’Action à un flux" dans [Créez votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).

N’oubliez pas :

* Le <Tooltip tip="JSON Web Token (JWT) : format standard de jeton d’identité (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> renvoyé à l’application demandeuse est généré et signé à la fin de l’exécution du déclencheur. Le JWT final signé n’est pas accessible dans une Action.

<div id="deny-access-to-specific-ja3ja4-fingerprints">
  ## Rejeter l’accès à des empreintes JA3/JA4 précises
</div>

L’objet `event.security_context` contient les valeurs d’empreinte JA3/JA4 pour la transaction en cours.

[Créer une nouvelle Action](/docs/fr-ca/customize/actions/write-your-first-action), puis sélectionnez le déclencheur `Login / Post Login`, puisque vous ajouterez l’Action au flux Login. Copiez le code suivant dans l’éditeur de code Actions :

```js lines theme={null}
exports.onExecutePreUserRegistration = async (event, api) => {
  const clientJa4 = event?.security_context?.ja4;
  console.log('[ACTION]', {clientJa4});
  const badFingerprints = ['t13d1517h2_8daaf6152771_b6f405a00624','t13d1516h2_8daaf6152771_d8a2da3f94cd'];
  if (clientJa4 && badFingerprints.includes(clientJa4)){
    api.access.deny('suspicious_tls_fingerprint', 'Your TLS fingerprint has been flagged as suspicious');
  }
};
```

Enfin, ajoutez l’Action que vous avez créée au [flux de connexion](https://manage.auth0.com/#/actions/flows/login/). Pour savoir comment joindre des Actions à des flux, consultez la section "associer l’Action à un flux" dans [créer votre première Action](/docs/fr-ca/customize/actions/write-your-first-action).
