LIVE · CATENA D'AUDIT · UE
SISTEMA · 99,99% UPTIME
v 1.0 ↗ FATTO IN UE

Autenticazione

Ogni richiesta all'API pubblica porta una coppia di credenziali — nb_pub_* (chiave pubblica) + nb_sec_* (secret). Il secret viene inviato come Bearer token. La credenziale è vincolata a una singola org + un catalogo di scope fisso.

Emettere le credenziali

  1. Accedi alla tua org su app.nexbasira.com.
  2. Vai su Admin → API credentials.
  3. Clicca Issue credential, scegli un nome + scope, conferma.
  4. Copia la coppia nb_pub_* + nb_sec_*. Il secret viene mostrato esattamente una volta. Salvalo subito nel tuo secrets manager — dal nostro lato conserviamo solo un hash SHA-256.

Usare la credenziale

Authorization: Bearer nb_sec_AbCdEf...

La chiave pubblica (nb_pub_*) identifica la credenziale nei nostri log + appare nell'header NB-Credential-Id dei recapiti dei webhook. Il secret autentica.

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

Catalogo degli scope

Ogni credenziale viene creata con un set di scope esplicito. Le richieste fuori da quegli scope restituiscono 403. Il catalogo degli scope è fisso (nessuno scope personalizzato in v1):

ScopeConcede
sessions:readElenca + recupera sessioni
sessions:writeCrea sessioni + terminale
participants:readElenca i partecipanti di una sessione
participants:writeGenera inviti per utenti sul campo
evidence:readElenca + recupera righe di prove + URL di download firmati
recordings:readLeggi i metadati degli artefatti di registrazione + URL di download
audit:readLeggi la catena di audit per-sessione + le coordinate di ancoraggio TSA
webhooks:readElenca gli endpoint webhook registrati + il log dei recapiti
webhooks:writeRegistra / rotate-secret / elimina endpoint webhook
branding:readLeggi il branding dell'org (logo / colori / footer PDF)
branding:writeModifica il branding dell'org
org:readLeggi i metadati dell'org
whiteboards:readElenca le lavagne per sessione

Rotazione

Per ruotare senza downtime:

  1. Emetti una nuova credenziale con lo stesso set di scope.
  2. Distribuisci il nuovo secret alla tua applicazione.
  3. Verifica che la nuova credenziale stia ricevendo traffico (Admin → API credentials mostra il timestamp dell'ultimo utilizzo).
  4. Revoca in modo soft la vecchia credenziale. Le richieste esistenti che la usano ricevono 401; la traccia di audit delle chiamate passate resta intatta.

Verifica a tempo costante

Sul backend, i secret sono memorizzati come SHA-256(secret + SECRET_KEY_pepper) e confrontati a tempo costante (hmac.compare_digest). Un dump di hash trafugato non può essere forzato a brute-force nel testo in chiaro senza rompere anche il pepper.

Cosa questa credenziale NON concede

  • Accesso admin alla SPA — è separato (login operatore + RBAC).
  • Ingresso lato campo — quelli usano URL firmate monouso generate tramite sessions.invite().
  • Provisioning SCIM — usa un bearer token separato per-org, vedi Provisioning SCIM.
  • Firma dei webhook — questa avviene con il secret whsec_* per-endpoint, vedi Webhooks.

Traccia di audit

Ogni chiamata API viene registrata con la chiave pubblica della credenziale + l'endpoint + lo stato. Le operazioni che modificano lo stato scrivono inoltre righe di audit nell'org interessata. L'admin può vedere l'attività della credenziale su Admin → API credentials → [credential] → Activity.