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

# Accès des applications aux API : autorisations client

> Découvrez les autorisations client

Dans Auth0, vous pouvez contrôler la manière dont les applications accèdent à vos API à l’aide des [politiques d’accès des applications aux API](/fr-CA/docs/get-started/apis/api-access-policies-for-applications) et des autorisations client.

Une autorisation client permet d’accorder à une application un accès précis à une API. Elle associe :

* Une API identifiée par son `audience` ou son identifiant unique.
* Une application identifiée par son `client_id`.
* Une liste d’autorisations, comme des portées d’accès et/ou des `authorization_details_types`, que l’application est autorisée à demander pour l’audience indiquée.

Pour en savoir plus sur la liste des attributs que vous pouvez définir dans une autorisation client, consultez [Attributs d’une autorisation client](#client-grant-attributes). Pour savoir comment définir et gérer des autorisations client, consultez [Créer une autorisation client](#create-client-grant).

<div id="application-api-access-policies-and-client-grants">
  ## Politiques d’accès des applications aux API et autorisations client
</div>

Lorsque vous configurez la [politique d’accès des applications](/fr-CA/docs/get-started/apis/api-access-policies-for-applications) d’une API avec `require_client_grant`, seules les applications pour lesquelles une autorisation client a été définie peuvent obtenir un jeton d’accès à l’API. L’autorisation client établit les autorisations maximales qu’une application peut demander à l’API, conformément au principe du moindre privilège. Par conséquent, Auth0 recommande d’utiliser `require_client_grant` lors de la configuration de la politique d’accès des applications d’une API.

<div id="example-social-media-api">
  ### Exemple : API de médias sociaux
</div>

Pour illustrer comment les autorisations client s’inscrivent dans le principe du moindre privilège, supposons que vous ayez une API de médias sociaux avec les autorisations suivantes : `read:posts`, `write:posts`, `read:friends` et `delete:posts`. Vous créez une application et définissez une autorisation client avec les autorisations suivantes : `read:posts` et `write:posts`.

Cette autorisation client sert maintenant de plafond strict. Même si l’API de médias sociaux comprend d’autres autorisations, votre application ne pourra jamais demander ni obtenir `read:friends` ou `delete:posts`.

<div id="user-delegated-access-vs-client-access">
  ## Accès délégué par l’utilisateur vs accès client
</div>

Pour l’accès utilisateur et l’accès client, les autorisations client définissent l’ensemble final de permissions qui contrôlent l’accès d’une application à une API. L’attribut `subject_type` de l’autorisation client détermine le type d’accès d’application autorisé pour une API.

Une application peut avoir jusqu’à deux autorisations client pour une même API :

* Lorsque vous définissez `subject_type` sur `client`, vous définissez ses permissions machine à machine.
* Lorsque vous définissez `subject_type` sur `user`, vous définissez ses permissions pour agir au nom de l’utilisateur.

Le tableau suivant explique comment les autorisations client contrôlent l’accès des applications aux API selon le type de flux d’accès :

| Type d’accès                                            | Attribut `subject_type`                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Accès par identifiants client (accès machine à machine) | Définissez `subject_type` sur `client`. | L’autorisation client autorise directement l’application à accéder à l’API en son propre nom plutôt qu’au nom de l’utilisateur final. Les permissions que vous définissez dans l’autorisation client sont celles que l’application est autorisée à recevoir dans le jeton d’accès.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Accès délégué par l’utilisateur                         | Définissez `subject_type` sur `user`.   | L’autorisation client définit les permissions maximales que l’application peut demander à l’API. Les permissions finales dans le jeton d’accès délivré à l’application au nom de l’utilisateur correspondent à l’intersection des permissions :<br /><ul><li>Demandées par l’application</li><li>Autorisées par l’autorisation client</li><li>Autorisées par les [politiques de contrôle d’accès fondé sur les rôles](/fr-CA/docs/manage-users/access-control/rbac) pour l’utilisateur</li><li>[Approuvées par l’utilisateur final](/fr-CA/docs/get-started/applications/third-party-applications/user-consent-and-third-party-applications), s’il y a lieu.</li></ul><br />Pour en savoir plus sur les flux d’accès délégué par l’utilisateur, consultez [Authentication and Authorization Flows](/fr-CA/docs/get-started/authentication-and-authorization-flow). Les flux d’accès délégué par l’utilisateur n’incluent pas le flux Client Credentials. |

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous pouvez modifier les portées finales accordées par le serveur d’autorisation à l’application ou à l’utilisateur à l’aide d’[Actions](/fr-CA/docs/customize/actions).
</Callout>

<div id="client-grant-attributes">
  ## Attributs d’une autorisation client
</div>

Une autorisation client comporte plusieurs attributs que vous pouvez définir pour configurer l’accès d’une application aux API à l’aide de l’API de gestion Auth0 :

| Attribut                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                          | Identifiant unique de l’autorisation client.                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `audience`                    | Identifiant unique de l’API à laquelle l’autorisation client s’applique.                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `client_id`                   | Identifiant unique de l’application à laquelle l’accès est accordé.                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `scopes`                      | Tableau de chaînes représentant les autorisations que l’application peut demander.                                                                                                                                                                                                                                                                                                                                                                                                              |
| `authorization_details_types` | Tableau de chaînes représentant les types de données d’autorisation enrichies que l’application peut demander. Cet attribut ne peut être précisé que pour les flux d’accès délégué par l’utilisateur.                                                                                                                                                                                                                                                                                           |
| `subject_type`                | Type d’accès à l’application permis par l’autorisation client :<br /><ul><li>`user` : utilisé pour l’accès délégué par l’utilisateur, ce qui correspond à tous les flux qui génèrent un jeton associé à un utilisateur final.</li><li>`client` : utilisé pour l’accès machine à machine, ce qui correspond au flux Client Credentials.</li></ul>                                                                                                                                                |
| `allow_all_scopes`            | Booléen. Indique si toutes les portées définies pour l’API sont autorisées pour l’application. Pour l’API, les portées définies ultérieurement sont automatiquement autorisées.                                                                                                                                                                                                                                                                                                                 |
| `organization_usage`          | Détermine comment l’application peut utiliser les organisations lorsqu’elle accède à l’API au moyen du flux Client Credentials. Les valeurs possibles sont : `deny`, `allow` ou `require`.<br /><br />Pour en savoir plus sur les paramètres des organisations, consultez [Organizations for M2M Applications: Define Organization Behavior](/fr-CA/docs/manage-users/organizations/organizations-for-m2m-applications/configure-your-application-for-m2m-access#define-organization-behavior). |
| `allow_any_organization`      | Détermine si l’application peut accéder à n’importe quelle organisation lorsqu’elle utilise le flux Client Credentials.<br /><br />Pour en savoir plus sur les paramètres des organisations, consultez [Organizations for M2M Applications: Define Organization Behavior](/fr-CA/docs/manage-users/organizations/organizations-for-m2m-applications/configure-your-application-for-m2m-access#define-organization-behavior).                                                                    |

<div id="create-client-grant">
  ## Créer une autorisation client
</div>

Vous pouvez créer :

* [Autorisations par application](#per-application-permissions) : Définissez des autorisations granulaires pour chaque application de votre locataire.
* [Autorisations par défaut pour les applications tierces](#default-permissions-for-third-party-applications) : Définissez des autorisations par défaut pour toutes les applications tierces de votre locataire.

Lorsque les deux existent pour la même API, les autorisations par application ont priorité sur les autorisations par défaut pour les applications tierces.

<div id="per-application-permissions">
  ### Autorisations par application
</div>

<Tabs>
  <Tab title="Tableau de bord Auth0">
    Pour configurer les autorisations par application à l’aide du tableau de bord Auth0 :

    1. Accédez à [Dashboard >  Applications > APIs](https://manage.auth0.com/#/apis) et sélectionnez l’API pour laquelle vous souhaitez configurer l’accès des applications.
    2. Ouvrez l’onglet **Settings** et faites défiler la page jusqu’à **Application Access Policy**.
       * Réglez **User-Delegated Access** sur **No apps allowed**, **Per-app authorization** ou **All apps allowed**.
         * **No apps allowed** : Aucune application ne peut obtenir de jeton d’accès pour l’API.
         * **Per-app authorization** : Seules les applications pour lesquelles une autorisation client a été définie peuvent obtenir un jeton d’accès pour l’API.
         * **All apps allowed** : Toute application de votre tenant peut obtenir un jeton d’accès pour l’API.
       * Réglez **Client Access** sur **Per-app authorization** ou **All apps allowed**.
         * **Per-app authorization** : Seules les applications pour lesquelles une autorisation client a été définie peuvent obtenir un jeton d’accès pour l’API.
         * **All apps allowed** : Toute application de votre tenant peut obtenir un jeton d’accès pour l’API.
    3. Sélectionnez **Save** pour enregistrer les paramètres de **Application Access Policy**.

    <Frame>
      <img src="https://mintcdn.com/translations/S4csL9vq6QUX5-Rr/docs/images/third-party-applications/application_access_policy.png?fit=max&auto=format&n=S4csL9vq6QUX5-Rr&q=85&s=99767f91f6ed62363a1a0fde1a8f41b4" alt="Paramètres de l’API dans le tableau de bord pour la politique d’accès des applications" width="1958" height="600" data-path="docs/images/third-party-applications/application_access_policy.png" />
    </Frame>

    Pour les autorisations par application, vous devez autoriser individuellement l’accès à l’API pour chaque application.

    1. Accédez à **Applications > APIs** et sélectionnez l’API.
    2. Ouvrez l’onglet **Application Access**.
    3. Faites défiler la page jusqu’à l’application, sélectionnez **Edit**, puis **Grant Access** pour **User-Delegated Access** et/ou **Client Access**. Sélectionnez ensuite les autorisations voulues.
    4. Sélectionnez **Save**.

    <Frame>
      <img src="https://mintcdn.com/translations/S4csL9vq6QUX5-Rr/docs/images/third-party-applications/grant-api-access.png?fit=max&auto=format&n=S4csL9vq6QUX5-Rr&q=85&s=57f8a27e6e446ae919139b0ca3caebd9" alt="Paramètres de l’API dans le tableau de bord pour accorder l’accès à l’API à une application" width="2002" height="128" data-path="docs/images/third-party-applications/grant-api-access.png" />
    </Frame>
  </Tab>

  <Tab title="API de gestion">
    Envoyez une requête [`POST`](https://auth0.com/docs/api/management/v2/client-grants/post-client-grants) au point de terminaison `/client-grants` avec le corps de requête suivant :

    ```bash lines theme={null}
    curl --location 'https://{yourDomain}/api/v2/client-grants' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}' \
    --data '{
        "client_id": "{CLIENT_ID}",
        "audience": "https://api.my-service.com",
        "scope": [
            "read:item"
        ],
        "authorization_details_types":["payment"],
        "subject_type": "user"
    }'
    ```
  </Tab>
</Tabs>

<div id="default-permissions-for-third-party-applications">
  ### Autorisations par défaut pour les applications tierces
</div>

Les [applications tierces](/fr-CA/docs/get-started/applications/third-party-applications) nécessitent toujours une autorisation client explicite pour accéder à une API, même lorsque la [politique d’accès](/fr-CA/docs/get-started/apis/api-access-policies-for-applications) de l’API est définie sur **Allow All**. Pour simplifier la gestion lorsque vous avez un grand nombre d’applications tierces ou que vous utilisez [Dynamic Client Registration](/fr-CA/docs/get-started/applications/dynamic-client-registration), configurez des autorisations ou des permissions par défaut qui s’appliquent automatiquement à toutes les applications tierces.

Une autorisation client tierce par défaut utilise l’attribut `default_for` plutôt qu’un `client_id`. Vous pouvez aussi définir des permissions propres à une application en créant une autorisation client avec un `client_id` précis. Lorsque les deux existent pour la même API, les permissions propres à l’application ont préséance.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les API système (la Management API, la My Account API, entre autres) ne prennent pas en charge les autorisations client tierces par défaut. L’accès aux API système ne peut pas être accordé aux applications tierces.
</Callout>

Les attributs `default_for` et `client_id` s’excluent mutuellement. Chaque autorisation client doit préciser exactement l’un ou l’autre.

Pour savoir comment configurer les politiques d’accès aux API pour les applications tierces, consultez [Configure Third-Party Applications](/fr-CA/docs/get-started/applications/third-party-applications/configure-third-party-applications#configure-api-access-policies).

<Tabs>
  <Tab title="Tableau de bord Auth0">
    Pour configurer les permissions par défaut des applications tierces à l’aide du tableau de bord Auth0 :

    1. Accédez à [Dashboard >  Applications > APIs](https://manage.auth0.com/#/apis) et sélectionnez l’API pour laquelle vous voulez configurer l’accès des applications.
    2. Ouvrez l’onglet **Settings** et faites défiler la page jusqu’à **Default Permissions for Third-Party Applications**.
       * Réglez **User-Delegated Access** et/ou **Client Access** sur **Unauthorized**, **Authorized** ou **All**.
         * **Unauthorized** : aucune permission n’est accordée.
         * **Authorized** : sélectionnez les permissions voulues.
         * **All** : inclut les permissions actuelles et futures.
    3. Sélectionnez **Save**.

    <Frame>
      <img src="https://mintcdn.com/translations/S4csL9vq6QUX5-Rr/docs/images/third-party-applications/default-permissions-settings.png?fit=max&auto=format&n=S4csL9vq6QUX5-Rr&q=85&s=b39ad27ef58bf44bde053a01cd514202" alt="Paramètres de l’API dans le tableau de bord avec les autorisations par défaut pour les applications tierces" width="1954" height="1022" data-path="docs/images/third-party-applications/default-permissions-settings.png" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    Envoyez une requête `POST` au point de terminaison `/api/v2/client-grants` avec le corps de requête suivant :

    ```bash cURL wrap lines theme={null} theme={null}
    curl --request POST \
        --url 'https://YOUR_DOMAIN/api/v2/client-grants' \
        --header 'Authorization: Bearer YOUR_MANAGEMENT_API_TOKEN' \
        --header 'Content-Type: application/json' \
        --data '{
            "default_for": "third_party_clients",
            "audience": "https://api.example.com",
            "scope": ["read:items", "write:items"],
            "subject_type": "user"
    }'
    ```

    | **Parameter**  | **Type** | **Description**                                                                                                                                                                                                                                                                                                           |
    | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `default_for`  | String   | Indique si cette autorisation est appliquée automatiquement à certains types d’applications. Définissez-la sur `third_party_clients` pour que toutes les applications tierces aient accès à cette API par défaut.                                                                                                         |
    | `audience`     | String   | L’identifiant unique (URI) de l’API pour laquelle l’autorisation est créée.                                                                                                                                                                                                                                               |
    | `scope`        | Array    | La liste des permissions (portées) autorisées dans le cadre de cette autorisation.                                                                                                                                                                                                                                        |
    | `subject_type` | String   | Définit le type d’accès d’application autorisé pour l’API :<br /><ul><li>`user` : utilisé pour l’accès délégué par l’utilisateur, ce qui correspond aux flux qui génèrent un jeton associé à un utilisateur final.</li><li>`client` : utilisé pour l’accès machine à machine, comme le flux Client Credentials.</li></ul> |
  </Tab>
</Tabs>

<div id="update-client-grant">
  ## Mettre à jour l’autorisation client
</div>

Pour mettre à jour une autorisation client existante, faites une requête [`PATCH`](https://auth0.com/docs/api/management/v2/client-grants/patch-client-grants-by-id) à `/client-grants/{id}` :

```bash lines theme={null}
curl --location --request PATCH 'https://{yourDomain}/api/v2/client-grants/{CLIENT_GRANT_ID}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}' \
--data '{
    "scope": [
        "read:item",
        "update:item"
    ],
    "authorization_details_types":["payment", "credits_transfer"]
}'
```

<div id="delete-client-grant">
  ## Supprimer une autorisation client
</div>

Pour supprimer une autorisation client, faites une requête [`DELETE`](https://auth0.com/docs/api/management/v2/client-grants/delete-client-grants-by-id) vers `/client-grants/{id}` :

```bash lines theme={null}
curl --location --request DELETE 'https://{yourDomain}/api/v2/client-grants/{CLIENT_GRANT_ID}' \
--header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}'
```

<div id="retrieve-client-grants">
  ## Récupérer les autorisations client
</div>

Vous pouvez aussi interroger les collections `client-grants` et les parcourir par page à l’aide de paramètres comme `client_id`, `audience` ou `subject_type` :

```bash lines theme={null}
curl --request GET \
--url 'https://{yourDomain}/api/v2/client-grants?subject_type=user&audience=https%3A%2F%2Fapi.my-service.com' \
--header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}' \
--header 'Accept: application/json'
```

<div id="learn-more">
  ## En savoir plus
</div>

* [Politiques d’accès aux API pour les applications](/fr-CA/docs/get-started/apis/api-access-policies-for-applications)
* [Types d’autorisation des applications](/fr-CA/docs/get-started/applications/application-grant-types)
* [Applications tierces](/fr-CA/docs/get-started/applications/third-party-applications)
* [Configurer des applications tierces](/fr-CA/docs/get-started/applications/third-party-applications/configure-third-party-applications)
