> ## Documentation Index
> Fetch the complete documentation index at: https://docs.creditbenchmark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Demander un jeton d’accès

> Signez une assertion client ES256 et échangez-la contre un jeton d’accès « bearer » à durée de vie limitée en utilisant le flux d’assertion client JWT « bearer » d’OAuth 2.0.

L’authentification utilise le flux OAuth 2.0 d’**assertion client JWT bearer** ([RFC 7523](https://datatracker.ietf.org/doc/html/rfc7523)) avec une autorisation `client_credentials`. Aucun secret client n’est transmis.

Vous devez :

* Votre **`OAuthClientId`** et votre **`KID`** figurant dans votre dossier d’intégration.
* La **clé privée** (`es256-private.pem`) correspondant à la clé publique que vous avez enregistrée. Voir [Configuration de la paire de clés](/api-reference/authentication/key-pair-setup).

## Étape 1 : Créer l’assertion client

Créez un JWT et signez-le avec votre clé **privée** ES256.

**En-tête**

```json theme={null}
{ "alg": "ES256", "typ": "JWT", "kid": "<KID>" }
```

**Données utiles**

```json theme={null}
{
  "iss": "<OAuthClientId>",
  "sub": "<OAuthClientId>",
  "aud": "cb-gateway-m2m-blue",
  "jti": "<random UUID>",
  "iat": 1790812800,
  "exp": 1790812920
}
```

| Réclamation | Valeur |
| - | - |
| `iss`, `sub` | Ces deux éléments **doivent** correspondre à votre `OAuthClientId`. |
| `aud` | **Doit** correspondre exactement `cb-gateway-m2m-blue`. Il ne s’agit pas de l’URL de la passerelle. |
| `jti` | Un nouvel UUID aléatoire pour chaque assertion. Les assertions sont à usage unique. |
| `iat` | L'heure actuelle, en secondes Unix. |
| `exp` | `iat` plus 120 secondes. Les assertions ont, par conception, une durée de vie limitée. |

## Étape 2 : Échangez-la contre un jeton d’accès

`POST` Transmettez l’assertion au point de terminaison du jeton sous la forme `application/x-www-form-urlencoded`. Consultez le document «[Référence du point de terminaison](/api-reference/create-jwt-token)» pour le schéma complet.

```http theme={null}
POST /api/security/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=<signed JWT>
&OAuthClientId=<OAuthClientId>
```

La réponse est au format JSON et contient un `accessToken` champ, valable pendant 30 minutes (`expiresIn: 1800`). Aucun jeton de rafraîchissement n’est émis pour les clients M2M ; par conséquent, `refreshToken` est donc toujours `null`.

## Étape 3 : Appeler l’API

Envoyez le jeton en tant que jeton au porteur à chaque requête :

| En-tête | Valeur |
| - | - |
| `Authorization` | `Bearer <accessToken>` |
| `Content-Type` | `application/json` |
| `Accept` | `application/json` |

Demandez un nouveau jeton à son expiration plutôt que de le conserver en cache à long terme.

## Exemple complet

Consultez [Exemples de scripts](/api-reference/authentication/sample-scripts) pour obtenir des versions exécutables en TypeScript et Python du flux complet. Votre dossier d’intégration comprend les mêmes scripts, préremplis avec vos informations.

## Dépannage

### Code d’erreur 401 provenant du point de terminaison du jeton

Le point de terminaison du jeton renvoie le même message vide `401` pour chaque assertion rejetée. Vérifiez chacun des points suivants :

* L'en-tête `alg` est `ES256` et `kid` est la `KID` d’une clé enregistrée et non révoquée.
* `iss` correspond exactement à votre `OAuthClientId`. Nous recherchons votre clé publique à l’aide de `iss` et `kid`.
* `aud` est exactement `cb-gateway-m2m-blue`.
* `exp` est présente et le restera à l’avenir. Nous autorisons un écart horaire de 30 secondes ; veuillez donc vérifier l’horloge de la machine si les échecs persistent.
* `jti` est présente et nouvelle. Une `jti` ne peut pas être réutilisé dans les 10 minutes.
* L’attestation est signée à l’aide de la clé privée correspondant à la clé publique que vous avez enregistrée.

### 401 « Accès non autorisé » provenant des routes API

Le jeton d’accès a expiré (les jetons ont une durée de validité de 30 minutes) ou la route n’est pas couverte par vos droits d’accès. Demandez un nouveau jeton et contactez votre administrateur Credit Benchmark si l’erreur persiste.

### Une clé est manquante, a été révoquée ou a fait l’objet d’une rotation

Contactez votre administrateur Credit Benchmark.

## Remarques de sécurité

* **Ne** communiquez **jamais** votre clé privée à qui que ce soit, y compris à Credit Benchmark. Seule la clé publique doit quitter vos systèmes.
* Générez une nouvelle assertion client pour chaque demande de jeton.
* En cas de compromission d’une clé privée, demandez-nous de la révoquer immédiatement et suivez la procédure décrite à l’adresse [rotation des clés](/api-reference/authentication/key-pair-setup#key-rotation).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.