È sicuro usare jku, kid e x5u nell'intestazione JSON Web Signature (JWS)?

3

Non capisco quali parametri di intestazione come jku , kid , x5u sono per in JSON Web Signature (JWS).

Dato che dobbiamo verificare l'integrità del contenuto rispetto a chiave segreta / chiave pubblica, è sicuro lasciare jku , kid , x5u nell'intestazione JWS? Qualcuno può sostituire queste sezioni da soli e firmare una nuova firma con la sua chiave contro il contenuto alterato. Quindi, come affrontiamo questo caso?

    
posta whuala 22.03.2018 - 08:37
fonte

1 risposta

3

Questi campi sono qui per consentire al componente di verificare il ticket di identificare la chiave utilizzata per la firma.

  • jku è un URI che fa riferimento alla chiave pubblica utilizzata per generare la firma. Deve seguire il formato RFC7517 . L'entità che verifica il token è responsabile di verificare se tale chiave di firma può essere considerata attendibile o meno.
  • kid è l'identificazione chiave ed è valida solo nel contesto di un determinato pubblico: il contesto dell'applicazione deve definire come utilizzare quel parametro per identificare la chiave. Può essere la fingerpring dell'utente cert x509 per la firma, può essere il numero seriale certificat, può essere un riferimento a una riga in una tabella, può essere l'ID di un segreto HMAC memorizzato in un file JSON, oppure XPath all'interno di un documento XML, qualunque sia definito dalla parte di firma.
  • x5u deve contenere un URL per il certificato x509 utilizzato per firmare il token. Il certificato deve essere in PEM formato.

Tipicamente, avrai uno solo di questi parametri in un determinato token (in fondo ci può essere una sola chiave di firma, anche se non è impossibile avere la stessa chiave accessibile con metodi diversi (questo significa principalmente che è Non è impossibile avere sia un'intestazione jku che una x5u che puntano alla stessa chiave ma dovresti cercare di evitare questo tipo di ambiguità).

Per definizione, se qualcuno cambia le intestazioni e firma di nuovo il ticket, il risultato non è lo stesso token quindi non devi preoccuparti di questo: puoi rifiutare in modo sicuro qualsiasi token che non può validare correttamente.

    
risposta data 22.03.2018 - 09:59
fonte

Leggi altre domande sui tag