Authentification
Obtenir un jeton OAuth2 et appeler l'API au travers de la gateway.
Nirio protège ses API avec OAuth2 (client_credentials). Selon la configuration de votre produit,
l'accès passe soit par OAuth2 seul, soit par OAuth2 avec mTLS. Cette configuration est
fixée par Nirio lors de l'enrôlement du produit.
Deux modes d'accès
| Mode du produit | Ce que vous présentez à chaque appel |
|---|---|
| OAuth2 | Un jeton Bearer obtenu avec votre client_id et client_secret. |
| OAuth2 + mTLS | Le même jeton Bearer, et votre certificat client (mTLS) sur la connexion TLS. |
Si votre produit est en OAuth2 + mTLS, un appel sans certificat client est refusé, même avec un jeton valide. Le certificat est fourni par Nirio lors de l'enrôlement.
Le même mode s'applique à la pré-autorisation
Lorsque la pré-autorisation est activée pour votre produit, Nirio s'authentifie auprès de votre serveur avec le mode configuré pour ce produit. En OAuth2 + mTLS, Nirio présente son certificat lors de cet appel. Le sens est inverse de celui de l'API : vous êtes le serveur appelé.
Dans les exemples ci-dessous, $API_BASE_URL désigne l'URL de base de votre environnement :
https://api.dev.nir.io
1. Obtenir un jeton
curl -X POST $API_BASE_URL/v3/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d grant_type=client_credentials \
-d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRETLa réponse contient un access_token (JWT) et sa durée de validité expires_in. Réutilisez le
jeton jusqu'à son expiration plutôt que d'en demander un à chaque appel.
2. Appeler l'API en OAuth2
curl $API_BASE_URL/v3/products/$PRODUCT_ID/invoices \
-H "Authorization: Bearer $ACCESS_TOKEN"3. Appeler l'API en OAuth2 + mTLS
Si votre produit est en OAuth2 + mTLS, ajoutez votre certificat client à la connexion. Le jeton reste nécessaire.
curl $API_BASE_URL/v3/products/$PRODUCT_ID/invoices \
--cert $CLIENT_CERT.pem --key $CLIENT_KEY.pem \
-H "Authorization: Bearer $ACCESS_TOKEN"Identification du partenaire
N'envoyez pas x-partner-id
Ne transmettez pas d'en-tête x-partner-id. Votre identité est déduite du jeton d'accès : toute
valeur envoyée à ce titre est ignorée.
Toutes les ressources (produits, factures) sont cloisonnées par partenaire : un produit ou une
facture appartenant à un autre partenaire est traité comme inexistant (404).
Erreurs d'authentification
| Cas | Statut | Réponse |
|---|---|---|
| Jeton absent, invalide ou expiré | 401 | Format propre à la gateway (pas d'enveloppe error.code) |
| Identifiant partenaire absent ou non-UUID | 401 | MISSING_PARTNER_ID |
{
"error": {
"code": "MISSING_PARTNER_ID",
"message": "The authenticated partner identifier is missing."
}
}MISSING_PARTNER_ID n'apparaît en pratique qu'en cas de mauvaise configuration du client
OAuth (identifiant non-UUID) : contactez l'équipe Nirio.