- Une API identifiée par son
audienceou 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.
Politiques d’accès des applications aux API et autorisations client
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.
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.
Accès délégué par l’utilisateur vs accès client
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_typesurclient, vous définissez ses permissions machine à machine. - Lorsque vous définissez
subject_typesuruser, vous définissez ses permissions pour agir au nom de l’utilisateur.
| 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 :
Pour en savoir plus sur les flux d’accès délégué par l’utilisateur, consultez Authentication and Authorization Flows. Les flux d’accès délégué par l’utilisateur n’incluent pas le flux Client Credentials. |
Vous pouvez modifier les portées finales accordées par le serveur d’autorisation à l’application ou à l’utilisateur à l’aide d’Actions.
Attributs d’une autorisation client
| 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 :
|
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.Pour en savoir plus sur les paramètres des organisations, consultez Organizations for M2M Applications: 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. Pour en savoir plus sur les paramètres des organisations, consultez Organizations for M2M Applications: Define Organization Behavior. |
Créer une autorisation client
- Autorisations par application : Définissez des autorisations granulaires pour chaque application de votre locataire.
- Autorisations par défaut pour les applications tierces : Définissez des autorisations par défaut pour toutes les applications tierces de votre locataire.
Autorisations par application
- Tableau de bord Auth0
- API de gestion
Pour configurer les autorisations par application à l’aide du tableau de bord Auth0 :
Pour les autorisations par application, vous devez autoriser individuellement l’accès à l’API pour chaque application.
- Accédez à Dashboard > Applications > APIs et sélectionnez l’API pour laquelle vous souhaitez configurer l’accès des applications.
- 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.
- Réglez User-Delegated Access sur No apps allowed, Per-app authorization ou All apps allowed.
- Sélectionnez Save pour enregistrer les paramètres de Application Access Policy.

- Accédez à Applications > APIs et sélectionnez l’API.
- Ouvrez l’onglet Application Access.
- 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.
- Sélectionnez Save.

Autorisations par défaut pour les applications tierces
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.
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.
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.
- Tableau de bord Auth0
- Management API
Pour configurer les permissions par défaut des applications tierces à l’aide du tableau de bord Auth0 :
- Accédez à Dashboard > Applications > APIs et sélectionnez l’API pour laquelle vous voulez configurer l’accès des applications.
- 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.
- Réglez User-Delegated Access et/ou Client Access sur Unauthorized, Authorized ou All.
- Sélectionnez Save.

Mettre à jour l’autorisation client
PATCH à /client-grants/{id} :
Supprimer une autorisation client
DELETE vers /client-grants/{id} :
Récupérer les autorisations client
client-grants et les parcourir par page à l’aide de paramètres comme client_id, audience ou subject_type :