{"revision":"9f11a31dd2951db0","language":"it","entry":{"id":"oidc-jwks","kind":"endpoint","group":"oidc","title":"Leggi le chiavi di firma del provider","method":"GET","path":"/oidc/jwks","paths":[],"summary":"Le chiavi pubbliche che firmano i token ID: una Ed25519 (EdDSA) e una P-256 (ES256), più la coppia precedente per 30 giorni dopo una rotazione.","response":"Un JWK Set.","parameters":[],"sample":"/oidc/jwks","access":"public","base":"directory","notes":["Cache-Control: public, max-age=300. Rileggilo quando un token nomina un kid che non hai.","Qui non si legge nessuna chiave API: un'intestazione Authorization su /oidc/ è la credenziale dell'app o della persona."],"errors":["404 not_found","429 rate_limited","500 internal_error","503 busy"],"related":["sign-in-with-veil"],"sections":[{"kind":"code","language":"shell","code":"curl -fsS 'https://veil.rip/oidc/jwks'"}],"live":false,"responses":[{"status":200,"contentType":"application/json","description":"Un JWK Set.","fields":[{"name":"keys","type":"array<object>","description":"Ognuna {kty, crv, x, y?, kid, use: sig, alg}. kid è l'impronta RFC 7638; alg è fisso per chiave."}]}],"responseObjects":[],"errorFormat":"json","errorDetails":[{"status":404,"code":"not_found","description":"La scheda, la chiave, l’alias, il codice o la risorsa richiesti non sono stati trovati.","action":"Controlla l’identificatore. Codici e anteprime temporanei potrebbero essere scaduti o già usati.","scope":"endpoint"},{"status":429,"code":"rate_limited","description":"È stato superato un limite anonimo, delle richieste firmate o della chiave API.","action":"Attendi almeno i secondi indicati da `Retry-After`. Condividi coda e budget dei tentativi tra i tuoi processi.","scope":"common"},{"status":500,"code":"internal_error","description":"Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.","action":"Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.","scope":"common"},{"status":503,"code":"busy","description":"L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.","action":"Attendi i secondi indicati da `Retry-After` e riprova con attese crescenti e un limite.","scope":"common"}],"responseHeaders":[{"name":"Cache-Control","value":"public, max-age=300","description":"Cinque minuti."}],"verify":"Verifica un token solo con la chiave che il suo kid nomina, e solo con l'alg di quella chiave. Rifiuta none e HS256.","documentationUrl":"https://veil.rip/docs/oidc-jwks?lang=it","supportsBrowserFetch":true,"browserMode":"fetch"}}