Skip to main content
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).

Prérequis

Obtenir des jetons d’accès

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 ParameterDescription
grant_typeIndique le flux OAuth 2.0 que vous souhaitez utiliser. Pour une communication machine à machine, utilisez la valeur client_credentials.
client_idIl 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_secretIl 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.
audienceIl 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.
{
  "access_token": "eyJ...Ggg",
  "expires_in": 86400,
  "scope": "read:clients create:clients read:client_keys",
  "token_type": "Bearer"
}
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.

Utiliser la bibliothèque cliente Node.js d’Auth0

Au lieu d’effectuer des appels HTTP, vous pouvez utiliser la bibliothèque node-auth0 pour obtenir automatiquement des jetons pour la Management API.

Utiliser des jetons d’accès

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.

Exemple : implémentation Python

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()

En savoir plus