Obtenir des jetons d’accès de la Management API pour la production
Découvrez comment obtenir des Jetons d’accès pour effectuer régulièrement des appels à la Management API.
Pour effectuer des appels fréquents à intervalles planifiés dans un environnement de production, vous devez mettre en place sur votre backend un processus qui vous fournira automatiquement un jeton (et simulera ainsi un jeton qui n’expire pas).
Pour demander à Auth0 un jeton v2 de la , effectuez une requête POST au point de terminaison https://{yourDomain}/oauth/token, en utilisant les identifiants de l’application machine à machine que vous avez créée à l’étape préalable.Le payload doit respecter le format suivant :N’oubliez pas de remplacer `{yourClientSecret}` par le indiqué dans l’onglet Settings de votre application.Les paramètres de la requête sont :
Request Parameter
Description
grant_type
Indique le flux OAuth 2.0 que vous souhaitez utiliser. Pour une communication machine à machine, utilisez la valeur client_credentials.
client_id
Il s’agit de la valeur du champ ID client de l’application machine à machine que vous avez créée. Vous pouvez la trouver dans l’onglet Settings de votre application.
client_secret
Il s’agit de la valeur du champ Secret client de l’application machine à machine que vous avez créée. Vous pouvez la trouver dans l’onglet Settings de votre application.
audience
Il s’agit de la valeur du champ Identifiant de l’Auth0 Management API. Vous pouvez la trouver dans l’onglet Settings de l’API.
Utilisez les scopes update:client_grants et create:client_grants uniquement avec des applications hautement privilégiées, car ils permettent à l’application de s’octroyer d’autres autorisations.
La réponse contiendra un JWT signé, une date d’expiration, les scopes accordés et le type de jeton.
D’après ce qui précède, nous pouvons voir que notre expirera dans 24 heures (86400 secondes), qu’il est autorisé à lire et à créer des applications, et qu’il s’agit d’un jeton d’accès de type Bearer.
Pour utiliser ce jeton, incluez-le dans l’en-tête Authorization de votre requête.Par exemple, pour obtenir toutes les applications, utilisez l’exemple suivant :
Vous pouvez obtenir la commande cURL de chaque point de terminaison dans le Management API v2 Explorer. Accédez au point de terminaison que vous voulez appeler, puis cliquez sur le lien get curl command dans la section Test this endpoint.
Ce script Python récupère un jeton d’accès pour la Management API v2, l’utilise pour appeler le point de terminaison Get all applications, puis affiche la réponse dans la console.Avant de l’exécuter, assurez-vous que les variables suivantes contiennent des valeurs valides :
AUDIENCE : l’identifiant de l’Auth0 Management API. Vous pouvez le trouver dans l’onglet Settings de l’API.
DOMAIN : le Domaine de l’application machine à machine que vous avez créée.
CLIENT_ID : l’ de l’application machine à machine que vous avez créée.
CLIENT_SECRET : le Secret client de l’application machine à machine que vous avez créée.
def main(): import json, requests from requests.exceptions import RequestException, HTTPError, URLRequired # Valeurs de configuration domain = 'YOUR_DOMAIN' audience = f'https://{domain}/api/v2/' client_id = '{yourClientId}' client_secret = '{yourClientSecret}' grant_type = "client_credentials" # Flux OAuth 2.0 à utiliser # Obtenir un jeton d'accès depuis Auth0 base_url = f"https://{domain}" payload = { 'grant_type': grant_type, 'client_id': client_id, 'client_secret': client_secret, 'audience': audience } response = requests.post(f'{base_url}/oauth/token', data=payload) oauth = response.json() access_token = oauth.get('access_token') # Ajouter le jeton à l'en-tête Authorization de la requête headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } # Récupérer toutes les applications à l'aide du jeton try: res = requests.get(f'{base_url}/api/v2/clients', headers=headers) print(res.json()) except HTTPError as e: print(f'HTTPError: {str(e.code)} {str(e.reason)}') except URLRequired as e: print(f'URLRequired: {str(e.reason)}') except RequestException as e: print(f'RequestException: {e}') except Exception as e: print(f'Generic Exception: {e}')# Code standard pour appeler la fonction main().if __name__ == '__main__': main()