Vous êtes ici :
Génération d'un jeton Web JSON (JWT)
Pour obtenir un jeton d'accès, vous devez générer un JWT avec des réclamations spécifiques et le signer en utilisant l’algorithme RS256 avec votre clé privée.
Éditions requises
| Autorisations utilisateur requises | |
|---|---|
| Pour générer un jeton d’API : | Utilisateur avec Enable API Access (Activer l’accès à l’API) |
Étape : 1 Obtenir l’URL du point de terminaison de demande de jeton
Vous devez d’abord obtenir l’URL du point de terminaison de demande de jeton.
- Insérez l’URL discoveryEndpoint que vous avez obtenue lors de la génération du jeton d’API dans Intelligence dans la barre de recherche de votre navigateur.
- Appuyez sur Entrée.
-
Copiez la valeur renvoyée pour le champ “token_endpoint”.
Exemple pour AWS US (également connu sous le nom de US1) :
"token_endpoint": "https://idp.intelligence.salesforce.com/us1/token"
Étape 2 : Signer le JWT
Pour signer le JWT, vous devez utiliser la clé privée fournie lors de la génération du jeton d’API dans Intelligence pour coder la charge.
Si vous utilisez Python, les modules nécessaires sont :
import jwt
import requests
import uuid
import time
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
La plate-forme Intelligence prend en charge le module JWT - jwt 1.3.1
Le JWT doit être généré avec des réclamations spécifiques et signé en utilisant l’algorithme RS256 avec votre clé privée.
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" et "sub" : Équivalent à serviceAccountId
"iat" : Heure Epoch en secondes.
"jti" : un UUID aléatoire sans "-".
Exemple 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')
Étape 3 : Utiliser le JWT pour obtenir un
Le point de terminaison du jeton est disponible dans l’URL discoveryEndpoint obtenue à partir de vos informations client d’API.
"token_endpoint":
"https://idp.intelligence.salesforce.com/us1/token""
| Paramètre | Type | Description |
|---|---|---|
| client_id | chaîne | Votre ID de client (serviceAccountId). |
| client_assertion | chaîne | Votre JWT |
| client_assertion_type | chaîne | Le type d’assertion client. (Valeur corrigée : 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer') |
| grant_type | chaîne | Le type d’octroi. (Valeur corrigée : 'client_credentials') |
Structure de la demande
[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
Exemple de réponse
{
"access_token": "eyJraWQ...",
"expires_in": 300
}
- “Access_token” : le jeton d'accès émis que vous utilisez pour effectuer des appels d’API.
- “Expires_in” : la durée de vie du jeton d’accès est 5 minutes (300 secondes).

