Aller au contenu principal

Intégration des Consommateurs

Enregistrez des partenaires externes et des applications en tant que consommateurs d'API — avec des credentials OAuth2 automatiques, des certificats mTLS optionnels et une intégration en masse.

Qu'est-ce qu'un Consommateur ?

Un consommateur représente un partenaire externe, une application ou une équipe qui consomme vos APIs. Les consommateurs sont différents des utilisateurs :

ConceptReprésenteMéthode d'AuthExemple
UtilisateurUne personne avec un accèsOIDC (Keycloak)Développeur accédant à la Console
ConsommateurUne app ou un partenaireClé API ou OAuth2Application mobile appelant votre API

Chaque consommateur appartient à un tenant et peut avoir plusieurs abonnements à différentes APIs.

Modèle de Données du Consommateur

ChampTypeDescription
idUUIDIdentifiant généré automatiquement
external_idstringVotre identifiant (unique par tenant, par exemple partner-acme)
namestringNom d'affichage
emailstringEmail de contact
companystringNom de l'organisation (optionnel)
descriptiontextNotes sur ce consommateur (optionnel)
tenant_idstringLe tenant auquel appartient ce consommateur
statusenumactive, suspended, blocked
consumer_metadataJSONAttributs personnalisés (optionnel)

Statut du Consommateur

StatutAccès APICas d'Usage
activeAccès complet via les abonnementsFonctionnement normal
suspendedTemporairement bloquéProblèmes de facturation, investigation
blockedDéfinitivement bloquéViolation des conditions, incident de sécurité
Configure your environment

The examples below use environment variables. Set them for your STOA instance:

export STOA_API_URL="https://api.gostoa.dev"       # Replace with your domain
export STOA_AUTH_URL="https://auth.gostoa.dev" # Keycloak OIDC provider
export STOA_GATEWAY_URL="https://mcp.gostoa.dev" # MCP Gateway endpoint

Self-hosted? Replace gostoa.dev with your domain.

Enregistrer un Consommateur

Via l'API REST

curl -X POST "${STOA_API_URL}/v1/consumers/${TENANT_ID}" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"external_id": "partner-acme",
"name": "ACME Corp Integration",
"email": "api-team@acme.example.com",
"company": "ACME Corporation",
"description": "Production integration for order management",
"consumer_metadata": {
"contract_id": "CNT-2026-042",
"tier": "enterprise"
}
}'

Réponse (201 Created) :

{
"id": "consumer-uuid-123",
"external_id": "partner-acme",
"name": "ACME Corp Integration",
"email": "api-team@acme.example.com",
"company": "ACME Corporation",
"tenant_id": "oasis",
"status": "active",
"keycloak_client_id": "oasis-partner-acme",
"consumer_metadata": {
"contract_id": "CNT-2026-042",
"tier": "enterprise"
},
"created_at": "2026-02-13T10:00:00Z"
}

Ce qui se Passe à la Création

Lorsque vous créez un consommateur, STOA effectue automatiquement :

  1. Crée un client OAuth2 Keycloak{tenant_id}-{external_id} (par exemple oasis-partner-acme)
  2. Active les comptes de service — Le client peut obtenir des tokens via le grant client_credentials
  3. Retourne les credentials une seule fois — Le Client ID et le secret ne sont affichés qu'à la création

Le consommateur peut maintenant s'authentifier à STOA et s'abonner aux APIs.

Via la Console

  1. Accédez à Consommateurs dans la barre latérale de la Console
  2. Cliquez sur Ajouter un Consommateur
  3. Remplissez le formulaire d'enregistrement
  4. Copiez les credentials OAuth2 depuis la boîte de dialogue de confirmation

Authentification des Consommateurs

Les consommateurs s'authentifient en utilisant leur client Keycloak créé automatiquement :

# Obtenir un token d'accès via les credentials client
TOKEN=$(curl -s -X POST "${STOA_AUTH_URL}/realms/${TENANT_REALM}/protocol/openid-connect/token" \
-d "client_id=oasis-partner-acme" \
-d "client_secret=${CLIENT_SECRET}" \
-d "grant_type=client_credentials" | jq -r '.access_token')

# Utiliser le token pour les appels API
curl "${STOA_API_URL}/v1/portal/apis" \
-H "Authorization: Bearer ${TOKEN}"

Gérer les Consommateurs

Lister les Consommateurs

curl "${STOA_API_URL}/v1/consumers/${TENANT_ID}" \
-H "Authorization: Bearer ${TOKEN}"

Mettre à Jour un Consommateur

curl -X PUT "${STOA_API_URL}/v1/consumers/${TENANT_ID}/${CONSUMER_ID}" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "ACME Corp Integration v2",
"consumer_metadata": {
"contract_id": "CNT-2026-042",
"tier": "enterprise",
"upgraded_at": "2026-06-01"
}
}'

Supprimer un Consommateur

curl -X DELETE "${STOA_API_URL}/v1/consumers/${TENANT_ID}/${CONSUMER_ID}" \
-H "Authorization: Bearer ${TOKEN}"
attention

La suppression d'un consommateur révoque également tous ses abonnements et supprime son client Keycloak. Cette action est irréversible.

Certificats mTLS

Pour les intégrations à haute sécurité, les consommateurs peuvent s'authentifier via des certificats mTLS (mutual TLS) à la place ou en plus des clés API.

Champs du Certificat

ChampDescription
certificate_fingerprintEmpreinte SHA-256 du certificat X.509
certificate_subject_dnNom distinctif du sujet
certificate_issuer_dnNom distinctif de l'émetteur
certificate_not_beforeDate de début de validité
certificate_not_afterDate de fin de validité
certificate_statusactive, rotating, revoked, expired

Renouveler un Certificat

curl -X POST "${STOA_API_URL}/v1/consumers/${TENANT_ID}/${CONSUMER_ID}/certs/rotate" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"new_certificate_pem": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"grace_period_hours": 48
}'

Pendant la période de grâce, l'ancien et le nouveau certificat sont tous deux acceptés.

Intégration en Masse

Pour intégrer de nombreux consommateurs en une fois (par exemple migration de partenaires), utilisez le téléchargement CSV :

curl -X POST "${STOA_API_URL}/v1/consumers/${TENANT_ID}/bulk-onboard" \
-H "Authorization: Bearer ${TOKEN}" \
-F "file=@consumers.csv"

Format CSV

external_id,name,email,company,description
partner-acme,ACME Corp,api@acme.example.com,ACME Corporation,Order management
partner-globex,Globex Inc,api@globex.example.com,Globex Inc,Supply chain
partner-initech,Initech,api@initech.example.com,Initech,HR integration

Réponse :

{
"total": 3,
"created": 3,
"failed": 0,
"errors": []
}

Flux Consommateur + Abonnement

Le flux d'intégration typique combine l'enregistrement du consommateur avec la création d'abonnement :

RBAC pour la Gestion des Consommateurs

ActionRôle Requis
Créer un consommateurtenant-admin, cpi-admin
Lister les consommateurstenant-admin, devops, viewer, cpi-admin
Mettre à jour un consommateurtenant-admin, cpi-admin
Supprimer un consommateurtenant-admin, cpi-admin
Intégration en massetenant-admin, cpi-admin
Renouveler un certificattenant-admin, cpi-admin

Voir Aussi