> ## 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 utiliser Actions avec le contrôle d’accès basé sur les rôles (RBAC).

# Exemples de cas d’utilisation : Actions avec l’autorisation

Auth0 [Actions](/fr-CA/docs/customize/actions) vous permettent de modifier ou de compléter le résultat de la décision prise par une [stratégie d’autorisation](/fr-CA/docs/manage-users/access-control/authorization-policies) préconfigurée, afin de gérer des cas plus complexes que ceux que permet à lui seul le [contrôle d’accès basé sur les rôles (RBAC)](/fr-CA/docs/manage-users/access-control/rbac). 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 soient ajoutées au <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+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 à une application donnée uniquement les jours de semaine
</div>

Supposons que vous ayez une application que vous voulez rendre accessible uniquement les jours de semaine. [Créez une nouvelle Action](/fr-CA/docs/customize/actions/write-your-first-action), puis sélectionnez le déclencheur `Login / Post Login`, car vous allez ajouter l’Action au flux de connexion. Copiez le code suivant dans l’éditeur de code des 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 flux, consultez la section "Attacher l’Action à un flux" dans [Créer votre première Action](/fr-CA/docs/customize/actions/write-your-first-action).

Si un utilisateur tente d’accéder à l’application durant la fin de semaine, l’accès sera refusé, même s’il s’authentifie et qu’il 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 de l’entreprise
</div>

Supposons que vous souhaitiez autoriser l’accès à une application, mais uniquement pour les utilisateurs qui y accèdent à partir du réseau de votre entreprise. [Créez une nouvelle Action](/fr-CA/docs/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 des 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](/fr-CA/docs/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 dispose des 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](/fr-CA/docs/customize/actions/write-your-first-action).
</Callout>

<div id="deny-access-to-anyone-calling-an-api">
  ## Refuser l’accès à quiconque appelle une API
</div>

Supposons que vous souhaitiez refuser l’accès à tous les utilisateurs qui appellent une API. Cela signifie que vous devez refuser l’accès en fonction de la valeur `identifier` de votre API, que vous trouverez dans le champ **API <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>** de votre API dans [Auth0 Dashboard > Applications > APIs](https://manage.auth0.com/#/apis). [Créez une nouvelle Action](/fr-CA/docs/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 des Actions :

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  // Dans Actions, une API est désignée sous le nom de serveur de ressources.
  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 flux, consultez la section "Associer l’Action à un flux" dans [Créer votre première Action](/fr-CA/docs/customize/actions/write-your-first-action).

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

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

Pour ajouter les rôles de l’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](/fr-CA/docs/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 des 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éer votre première Action](/fr-CA/docs/customize/actions/write-your-first-action).

N’oubliez pas :

* Le <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> renvoyé à l’application qui en fait la demande est généré et signé à la fin du traitement du déclencheur. Le JWT final signé n’est pas accessible dans une Action.

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

L’objet `event.security_context` contient les valeurs d’empreinte JA3/JA4 associées à la transaction en cours.

[Créez une nouvelle Action](/fr-CA/docs/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 des 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 associer des Actions à des flux, consultez la section "Associer l’Action à un flux" dans [Créer votre première Action](/fr-CA/docs/customize/actions/write-your-first-action).
