EN DIRECT · AUDIT CHAÎNÉ · ÉDR UE
SYSTÈME · 99,99% DISPONIBILITÉ
v 1.0 ↗ FAIT EN UE

Authentification

Chaque requête à l'API publique porte une paire d'identifiants — nb_pub_* (clé publique) + nb_sec_* (secret). Le secret est envoyé en tant que Bearer token. L'identifiant est restreint à une seule organisation + un catalogue de scopes fixe.

Émettre des identifiants

  1. Connectez-vous à votre organisation sur app.nexbasira.com.
  2. Allez dans Admin → Identifiants API.
  3. Cliquez sur Émettre un identifiant, choisissez un nom + des scopes, confirmez.
  4. Copiez la paire nb_pub_* + nb_sec_*. Le secret n'est affiché qu'une seule fois. Stockez-le immédiatement dans votre gestionnaire de secrets — nous n'en conservons qu'un hachage SHA-256 de notre côté.

Utiliser l'identifiant

Authorization: Bearer nb_sec_AbCdEf...

La clé publique (nb_pub_*) identifie l'identifiant dans nos logs + apparaît dans l'en-tête NB-Credential-Id des livraisons de webhook. Le secret authentifie.

curl https://app.nexbasira.com/api/v1/public/sessions \
  -H "Authorization: Bearer nb_sec_..."

Catalogue de scopes

Chaque identifiant est créé avec un ensemble de scopes explicite. Les requêtes hors de ces scopes renvoient 403. Le catalogue de scopes est fixe (pas de scopes personnalisés en v1) :

PortéeAccorde
sessions:readLister + récupérer les sessions
sessions:writeCréer des sessions + les terminer
participants:readLister les participants d'une session
participants:writeÉmettre des invitations d'utilisateur terrain
evidence:readLister + récupérer les lignes de preuve + les URL de téléchargement signées
recordings:readLire les métadonnées des artefacts d'enregistrement + les URL de téléchargement
audit:readLire la chaîne d'audit par session + les coordonnées d'ancrage TSA
webhooks:readLister les endpoints de webhook enregistrés + le journal des livraisons
webhooks:writeEnregistrer / faire tourner le secret / supprimer des endpoints de webhook
branding:readLire le branding de l'organisation (logo / couleurs / pied de page PDF)
branding:writeModifier le branding de l'organisation
org:readLire les métadonnées de l'organisation
whiteboards:readLister les tableaux blancs par session

Rotation

Pour effectuer la rotation sans interruption :

  1. Émettez un nouvel identifiant avec le même ensemble de scopes.
  2. Déployez le nouveau secret dans votre application.
  3. Vérifiez que le nouvel identifiant reçoit du trafic (Admin → Identifiants API affiche l'horodatage de dernière utilisation).
  4. Révoquez en douceur l'ancien identifiant. Les requêtes existantes qui l'utilisent renvoient 401 ; la piste d'audit des appels passés reste intacte.

Vérification en temps constant

Côté backend, les secrets sont stockés sous la forme SHA-256(secret + SECRET_KEY_pepper) et comparés en temps constant (hmac.compare_digest). Un dump de hachages divulgué ne peut pas être forcé par force brute jusqu'au texte en clair sans casser aussi le pepper.

Ce que cet identifiant n'accorde PAS

  • L'accès admin à la SPA — c'est distinct (connexion opérateur + RBAC).
  • La connexion côté terrain — elle utilise des URL signées à usage unique émises via sessions.invite().
  • Le provisionnement SCIM — utilise un bearer token distinct propre à chaque organisation, voir Provisionnement SCIM.
  • La signature des webhooks — elle se fait avec le secret whsec_* propre à chaque endpoint, voir Webhooks.

Piste d'audit

Chaque appel à l'API est journalisé avec la clé publique de l'identifiant + l'endpoint + le statut. Les opérations qui modifient l'état écrivent en plus des lignes d'audit dans l'organisation concernée. L'administrateur peut consulter l'activité de l'identifiant dans Admin → Identifiants API → [identifiant] → Activité.