Skip to main content
Pour lancer des appels fréquents et programmés dans un environnement de production, vous devez créer un processus au niveau de votre système dorsal, qui vous fournira automatiquement un jeton (et ainsi simuler un jeton permanent).

Prérequis

Obtenir des jetons d’accès

Pour demander à Auth0 un jeton de v2, effectuez une opération POST vers le point de terminaison https://{yourDomain}/oauth/token en utilisant les identifiants de l’application machine-machine que vous avez créée dans l’étape préalable. Les données doivent être au format suivant : N’oubliez pas de mettre à jour {yourClientSecret} avec le secret du client dans l’onglet Settings (Paramètres) de votre application. Les paramètres de la demande sont :
Paramètre de la requêteDescription
grant_typeIndique le flux OAuth 2.0 que vous souhaitez exécuter. Pour la communication entre machines, utilisez la valeur client_credentials.
client_idIl s’agit de la valeur du champ Client ID de l’application de communication entre machines que vous avez créée. Vous pouvez la trouver dans l’onglet [Paramètres] de votre application(https://manage.auth0.com/#/applications/{yourClientId}/settings).
client_secretIl s’agit de la valeur du champ Client Secret de l’application de communication entre machines que vous avez créée. Vous pouvez la trouver dans l’onglet Paramètres de votre application.
audienceIl s’agit de la valeur du champ Identifier de l’Auth0 Management API. Vous pouvez le trouver dans l’onglet Paramètres de l’API.
Utilisez les permissions update:client_grants et create:client_grants uniquement avec des applications à privilèges élevés, car elles permettent au client de s’accorder des autorisations supplémentaires.
La réponse contiendra un jeton JSON Web (JWT) signé, un délai d’expiration, les permissions accordées et le type de jeton.
{
  "access_token": "eyJ...Ggg",
  "expires_in": 86400,
  "scope": "read:clients create:clients read:client_keys",
  "token_type": "Bearer"
}
Vous pouvez voir ci-dessus que notre jeton d’accès expirera dans 24 heures (86 400 secondes), qu’il a été autorisé à lire et créer des applications et qu’il s’agit d’un Jeton d’accès du porteur.

Utilisation de la bibliothèque client Node.js d’Auth0

Comme alternative aux appels HTTP, vous pouvez utiliser la bibliothèque node-auth0 pour obtenir automatiquement des jetons pour Management API.

Utiliser des jetons d’accès

Pour utiliser ce jeton, il faut l’inclure dans l’en-tête Authorization de votre demande.
curl --request POST \
  --url http:///%7BmgmtApiEndpoint%7D \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
  --header 'content-type: application/json'
Par exemple, pour obtenir toutes les applications procédez comme suit :
Vous pouvez obtenir la commande curl pour chaque point de terminaison depuis l’Explorateur de Management API v2. Allez au point de terminaison que vous voulez appeler, puis cliquez sur le lien get curl command (obtenir la commande curl) dans la section Test this endpoint (Tester ce point de terminaison).

Exemple : Implémentation Python

Ce script python obtient un jeton d’accès à Management API v2, l’utilise pour appeler le point de terminaison Obtenir toutes les applications et affiche la réponse dans la console. Avant de l’exécuter, vérifiez que les variables suivantes ont des valeurs valides :
  • AUDIENCE: L’identifiant de Auth0 Management API. Vous pouvez le trouver dans l’onglet Paramètres de l’API.
  • DOMAIN: Le Domaine de l’application machine-à-machine que vous avez créée.
  • CLIENT_ID: L’ID client 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

  # Configuration Values
  domain = 'YOUR_DOMAIN'
  audience = f'https://{domain}/api/v2/'
  client_id = 'YOUR_CLIENT_ID'
  client_secret = 'YOUR_CLIENT_SECRET'
  grant_type = "client_credentials" # OAuth 2.0 flow to use

  # Get an Access Token from 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')

  # Add the token to the Authorization header of the request
  headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
  }

  # Get all Applications using the token
  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}')

# Standard boilerplate to call the main() function.
if __name__ == '__main__':
  main()

En savoir plus

I