Recentemente, ho letto il JWT " RFC e sto avendo qualche difficoltà a capire il significato di < em> collisione riguardante i nomi dei reclami .
I nomi dei reclami registrati sono più o meno chiari. Se ho capito bene, questi sono indirizzati a fornire specifiche JWT con una serie di richieste fuori dalla scatola. 1
Tuttavia, quando si tratta di pubblico e private , non la vedo così chiaramente. La mia domanda riguarda la collisione di nomi di rivendicazioni pubbliche e private.
Pubblica
Claim Names can be defined at will by those using JWTs. However, in
order to prevent collisions, any new Claim Name should either be
registered in the IANA "JSON Web Token Claims" registry established
by Section 10.1 or be a Public Name: a value that contains a
Collision-Resistant Name. In each case, the definer of the name or
value needs to take reasonable precautions to make sure they are in
control of the part of the namespace they use to define the Claim
Name.
Privato
Private Claim Names are subject to collision and should be used with caution.
Che cosa significa collisione in questo contesto? In che modo i nomi dei reclami possono scontrarsi quando esiste un solo provider di autenticazione e autorizzazione? Questi provider non sono a conoscenza delle affermazioni che popolano e verificano?
Potrebbe essere possibile che un fornitore di autenticazione secondario possa modificare il payload JWT in modo che possa sovrascrivere alcune di queste affermazioni?
Probabilmente, mi manca qualcosa di importante per quanto riguarda l'autenticazione e il flusso di lavoro dell'autorizzazione, ma non so cosa. O forse non ho la definizione di collisione a causa delle mie limitate competenze in inglese.
1: Ho verificato un paio di API JWT in Java e ho confermato che queste affermazioni possono essere informate tramite metodi / funzioni dedicati (a differenza delle affermazioni pubbliche o private che sono informate come un valore-chiave tupla ).