Usted está aquí:
Generar un token web JSON (JWT)
Para obtener un token de acceso, debe generar un JWT con afirmaciones específicas y firmarlo usando el algoritmo RS256 con su clave privada.
Ediciones necesarias
| Permisos de usuario necesarios | |
|---|---|
| Para generar un token de API | Usuario con permiso para Activar acceso de API |
Paso: 1 Obtenga la URL del endpoint de solicitud de token
Primero debe obtener la URL del endpoint de solicitud del token.
- Inserte la URL de DiscoveryEndpoint que obtuvo al generar el token API en Intelligence en la barra de búsqueda de su navegador.
- Pulse Intro.
-
Copie el valor devuelto para el campo "token_endpoint".
Ejemplo para AWS US (también conocido como US1):
"token_endpoint": "https://idp.intelligence.salesforce.com/us1/token"
Paso 2: Firmar la JWT
Para firmar el JWT, debe utilizar la clave privada proporcionada al generar el token API en Intelligence para codificar la carga útil.
Con Python, los módulos necesarios que necesitamos son:
import jwt
import requests
import uuid
import time
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
La plataforma Intelligence admite el módulo JWT - jwt 1.3.1
El JWT debe generarse con afirmaciones específicas y firmarse utilizando el algoritmo RS256 con su clave privada.
JWT Claims (payload):
{
"iss": "your-client-id",
"aud": "https://idp.intelligence.salesforce.com"",
"sub": "your-client-id",
"iat": 1690129371, (time when the token was issued)
"jti": "45911cd010b846f9810b150c969b0007"
}
"iss" and "sub": Equivalente al serviceAccountId
"iat": Tiempo Unix en segundos.
"jti": Un UUID aleatorio sin "-".
Ejemplo de JWT
# env can be us1 / us2 / eu1 / eu2
app = 'us1'
service_account_id = ''
private_key_str = '''-----BEGIN RSA PRIVATE KEY-----\nMIIEogI....REDACTED.....xweWOhhutft/sA=\n-----END RSA PRIVATE
KEY-----'''
private_key = serialization.load_pem_private_key(
private_key_str.encode(),
password=None,
backend=default_backend()
)
private_key_jwk = jwt.jwk_from_pem(private_key_str.encode())
payload = {
"iss": service_account_id,
"aud": "https://idp.intelligence.salesforce.com"",
"sub": service_account_id,
"iat": int(time.time()),
"jti": str(uuid.uuid4()).replace('-','')
}
jwt_object = jwt.JWT()
jwt_token = jwt_object.encode(payload, private_key_jwk, alg='RS256')
Paso 3: Utilice el JWT para obtener un de token de plataforma
El endpoint del Token está disponible en la URL discoveryEndpoint obtenida de la información de su cliente de API.
"token_endpoint":
"https://idp.intelligence.salesforce.com/us1/token""
| Parámetro | Tipo | Descripción |
|---|---|---|
| client_id | cadena | Su ID de cliente (serviceAccountId). |
| client_assertion | cadena | Su JWT |
| client_assertion_type | cadena | El tipo de aserción de cliente (Valor fijo: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer') |
| grant_type | cadena | El tipo de concesión. (Valor fijo: 'client_credentials') |
Estructura de solicitud
[token_endpoint_obtained_from_the_beginning_of_Step_2]?grant_type=client_credentials&client_assertion=[your_signed_jwt_token]&client_id=[your_client_id]&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
Respuesta de ejemplo
{
"access_token": "eyJraWQ...",
"expires_in": 300
}
- “access_token”—El token de acceso emitido que utiliza para realizar llamadas API.
- “expires_in”—La vida útil del token de acceso es de 5 minutos (300 segundos).

