JWT je podepsáno s použitím předsdílený tajný klíč. Protože to je REST API do backend a bez státní příslušnosti, jwt se používá pro povolení a postavit hlavní objekt
Jak říkáš, přístupový token představují povolení v aplikaci, pokud obnovovací token je vystaven, pak obnovovací token může být předložený špatný herec, jak získat přístupový token, které lze použít pro stejné povolení.
Pomocí 'předsdílený tajný' označuje JWT je HMAC pouze varianta JWT, tj. není šifrování jako by naznačovalo, soukromého a veřejného klíče dvojice proti 'předsdílený tajný'. Takže JWT je v podstatě podpis pro účely bezpečnostní vlastnosti jsme zajištění integrity , že tvrzení JWT jsou dobře tvarované a nebyly změněny od podepsána. To také znamená, že stejné tajemství je použit pro podepsání na jednom konci, která byla použita k ověření, na druhé straně, stejné tajemství, musí být použit, protože ověření podpisu vyžaduje, aby oba konce generovat podpis a oba podpis zápas. Takže žádná data jsou šifrována, takže není data v JWT je citlivá a musí být chráněna.
Vzhledem k této souvislosti, jak osvěžit a přístupový token je jednoduchý JWT, že mohou být generovány pouze držitel tajemství - jsou-li vystaveny mohou být použity, aby se škodlivé žádosti, jak dlouho jak oni zůstávají v platnosti (nbf
tvrdí).
V podstatě tento typ JWT mohou být zneužity, pokud jsou vystaveny k zosobnění identity tajemství, které podepsaly JWT představuje, aniž vlastně věděl, že tajemství sám, dokud nbf
nárok zaniká token a refresh token je mechanismus prodloužit nbf
tvrdí, aniž by tajemství (které by mělo za následek nový podpis, protože nbf
tvrzení by změnit, pokud je použit).
Je tam jeden, ochrana před access tokenu opětovné použití, to je nonce tvrzení. Pokud nemáte v současné době používají nonce tvrzení si můžete přečíst o tom, jak OIDC zavedli a dělat, že stejný ve vaší aplikaci. Ale jak říkáte, vaše aplikace je bez státní příslušnosti, ale doufejme, že backend má formu státu, aby zajistil, ne nonce opětovné použití a zabránit JWT podpis použít. Pro každý nonce JWT podpis změny, tedy přístupový token změny a může být použit pouze 1-čas. Takže v případě odcizení je spor, který používá token první, což výrazně snižuje riziko, ale není ideální řešení.