veil

Accedi: il consenso firmato

Il testo del consenso firmato da una chiave di dispositivo attiva della scheda di una persona. Il server lo controlla con la scheda e la sua versione nel registro verificato, tiene l'accesso e dà il codice.

POST/oidc/requests/{id}/consent
Accesso
Serve un codice privato
Client
Client locale o server

Parametri#

NomePosizioneSignificato
idObbligatorioPercorsoL'id della richiesta: 43 caratteri dall'indirizzo della pagina di consenso (`?req=`) o dal suo elemento meta.

Corpo JSON#

NomePosizioneSignificato
consentObbligatorioJSONveil-rubrica:oidc-consent:v1, a capo, poi il JSON canonico {card, challenge, client, iss, key, nonce, redirect, request, scopes, state, time, v: 1}.
signatureObbligatorioJSONLa firma della chiave di dispositivo sui byte UTF-8 esatti di consent (hex per Ed25519).

Esempi di richiesta#

cURL
curl -fsS --json @consent.json "https://veil.rip/oidc/requests/$REQUEST_ID/consent"

Risposta#

HTTP 200application/json

{redirect, login, version, log}: il browser va a redirect.

CampoTipoSignificato
redirectstringredirect_uri con code, state e iss.
loginintegerL'id dell'accesso (sid l<id> nel token ID).
versionintegerLa versione della scheda con cui l'accesso è stato controllato.
logobject{origin, index, size, root}: la voce della versione e il checkpoint verificato.

Intestazioni della risposta#

IntestazioneValoreSignificato
Content-Typeapplication/jsonJSON, anche per gli errori.
Cache-Controlno-storePrivata: mai in una cache.

Note d’uso#

  • time sono secondi Unix entro due minuti dall'ora del server. Una richiesta prende un solo consenso; la stessa firma ripetuta risponde 410.

Errori#

Gli errori API restituiscono un oggetto error. Usa error.code nella logica del programma; error.message è un testo inglese per le persone e può cambiare. Guida a risposte ed errori

HTTPCodiceSignificato e cosa fare
400invalid_json

Il corpo non è un oggetto JSON, contiene chiavi duplicate o dati finali.

Invia un solo oggetto JSON valido con Content-Type application/json.

400invalid_parameter

Un campo del percorso, della query o del corpo manca, è malformato o fuori intervallo.

Correggi il campo indicato in error.message prima di inviare di nuovo.

401invalid_signature

La firma della richiesta HTTP non è valida.

Firma metodo, percorso e byte del corpo esatti, senza modificarli dopo.

401stale_timestamp

Il timestamp firmato è fuori dalla finestra temporale ammessa.

Confronta l’intestazione Date del server con il tuo orologio, poi genera nuovi nonce, timestamp e firma.

403key_banned

La chiave del dispositivo che firma è sospesa dallo staff di Veil.

Usa una chiave attiva autorizzata o chiedi allo staff di riesaminare la restrizione.

403key_mismatch

La chiave di firma non è autorizzata per questa scheda o operazione.

Usa una chiave di dispositivo attiva con il ruolo di titolare o membro richiesto.

403veil_suspended

La scheda è sospesa dallo staff di Veil, quindi non accede alle app.

Non c'è niente da riprovare finché dura la sospensione.

404not_found

La scheda, la chiave, l’alias, il codice o la risorsa richiesti non sono stati trovati.

Controlla l’identificatore. Codici e anteprime temporanei potrebbero essere scaduti o già usati.

410erased

La scheda esisteva ed è stata cancellata o rimossa. La risposta contiene anche la ricevuta pubblica di cancellazione.

Smetti di usare questa scheda come autorità corrente. Conserva soltanto la ricevuta pubblica se serve.

410request_expired

La richiesta di accesso è già stata usata o ha più di 30 minuti.

Torna all'app e ricomincia.

413payload_too_large

Il corpo della richiesta supera il limite in byte dell’endpoint.

Riduci il corpo codificato. La gestione delle chiavi API ammette al massimo 8 KiB.

503log_unavailable

Al momento il registro pubblico non può essere letto, verificato o usato per pubblicare.

Per le letture, considera il risultato non verificato e riprova più tardi. Prima di ripetere una scrittura, leggi la scheda per controllare se la pubblicazione è terminata.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
429rate_limited

È stato superato un limite anonimo, delle richieste firmate o della chiave API.

Attendi almeno i secondi indicati da Retry-After. Condividi coda e budget dei tentativi tra i tuoi processi.

500internal_error

Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.

Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.

503busy

L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.

Attendi i secondi indicati da Retry-After e riprova con attese crescenti e un limite.