Skip to main content
Para realizar llamadas programadas frecuentes en un entorno de producción, debes implementar un proceso en tu backend que te proporcione un token automáticamente (y, de ese modo, simule un token sin vencimiento).

Requisitos previos

Obtener tokens de acceso

Para solicitar a Auth0 un token v2 de , realice una operación POST en el endpoint https://{yourDomain}/oauth/token con las credenciales de la aplicación Machine-to-Machine que creó en el paso de requisitos previos. La carga útil debe tener el siguiente formato: Recuerda actualizar `{yourClientSecret}` con el en la pestaña Settings de tu aplicación. Los parámetros de la solicitud son:
Parámetro de solicitudDescripción
grant_typeIndica qué flujo de OAuth 2.0 quieres ejecutar. Para la comunicación de máquina a máquina, usa el valor client_credentials.
client_idEste es el valor del campo ID de cliente de la aplicación Machine-to-Machine que creaste. Puedes encontrarlo en la pestaña Settings de tu aplicación.
client_secretEste es el valor del campo Secreto del cliente de la aplicación Machine-to-Machine que creaste. Puedes encontrarlo en la pestaña Settings de tu aplicación.
audienceEste es el valor del campo Identifier de Auth0 Management API. Puedes encontrarlo en la pestaña Settings de la API.
Usa los alcances update:client_grants y create:client_grants solo con aplicaciones con privilegios elevados, ya que permiten que el cliente se conceda más permisos a sí mismo.
La respuesta contendrá un JWT firmado, una hora de expiración, los alcances concedidos y el tipo de token.
{
  "access_token": "eyJ...Ggg",
  "expires_in": 86400,
  "scope": "read:clients create:clients read:client_keys",
  "token_type": "Bearer"
}
De lo anterior, podemos ver que nuestro expirará en 24 horas (86400 segundos), está autorizado para leer y crear aplicaciones, y es un token de acceso Bearer.

Use la biblioteca cliente de Node.js de Auth0

Como alternativa a realizar llamadas HTTP, puede usar la biblioteca node-auth0 para obtener automáticamente tokens para la Management API.

Usar tokens de acceso

Para usar este token, inclúyelo en el encabezado Authorization de la solicitud. Por ejemplo, para obtener todas las aplicaciones, usa lo siguiente:
Puede obtener el comando curl para cada endpoint desde el Explorer de Management API v2. Vaya al endpoint que quiera invocar y haga clic en el enlace get curl command en la sección Test this endpoint.

Ejemplo: implementación en Python

Este script de Python obtiene un Token de acceso de la Management API v2, lo usa para llamar al endpoint Obtener todas las aplicaciones e imprime la respuesta en la consola. Antes de ejecutarlo, asegúrate de que las siguientes variables contengan valores válidos:
  • AUDIENCE: El identificador de la Auth0 Management API. Puedes encontrarlo en la pestaña Settings de la API.
  • DOMAIN: El dominio de la aplicación Machine-to-Machine que creaste.
  • CLIENT_ID: El de la aplicación Machine-to-Machine que creaste.
  • CLIENT_SECRET: El Secreto del cliente de la aplicación Machine-to-Machine que creaste.
def main():
  import json, requests
  from requests.exceptions import RequestException, HTTPError, URLRequired

  # Valores de configuración
  domain = 'YOUR_DOMAIN'
  audience = f'https://{domain}/api/v2/'
  client_id = '{yourClientId}'
  client_secret = '{yourClientSecret}'
  grant_type = "client_credentials" # Flujo de OAuth 2.0 a utilizar

  # Obtener un token de acceso de 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')

  # Agregar el token al encabezado de autorización de la solicitud
  headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
  }

  # Obtener todas las aplicaciones con el 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}')

# Código estándar para llamar a la función main().
if __name__ == '__main__':
  main()

Más información