Je to bezpečné vystavit refreshtoken API

0

Otázka

Mám aplikace vyvinuté pomocí Reagovat v front-end a ASP.Net Web API do backend. Já používám JWT pro povolení. Proces je

  1. Když se uživatel přihlásí, a je ověřené, 2 žetony jsou odesílány do front-end, access token a refresh token. Přístupový token je JWT a osvěžuje token je náhodný řetězec a refresh token je uložen v databázi.
  2. Pro každé následné volání Api přístupový token je připojen v hlavičce, mám filtru ověřování, který ověřuje přístup k tokenu.
  3. Jakmile je přístupový token vypršel, 401 stav je vyvolána chybová zpráva TokenExpired.
  4. Poté, front-end přijímá 401, vyzývá obnovovací token API získat obnovovací token

Otázkou mám, je, že nemohu mít filtru ověřování k ověření přístupový token refresh žetony API, jak to bude házet 401 vzhledem k vypršela přístupový token, takže potřebuju, aby se obnovovací token API být anonymní, takže to není hit ověřování filtr. Když jsem se anonymní jsem volání do databáze dostat obnovovací token uložen pro uživatele a porovnejte ji s jedním, který jsem obdržel od front-end. Takže je to bezpečné, aby obnovovací token API anonymní, pokud ne, co je nejlepší způsob?

asp.net-web-api c# jwt
2021-11-24 05:13:45
2
0

Na Auth0, Vytvořil sadu funkcí, které zmírňují rizika spojená s použitím refresh žetony tím, že uložení ochranných opatření a kontroly jejich životního cyklu. Naše identity platforma nabízí obnovovací token rotace, která také přichází s automatické opakované použití detekce.

Prosím, přečtěte si následující téma.

Refresh Token Rotace

Refresh Token Automatické Opakované Použití Detekce

2021-11-24 05:56:21

Děláme trochu refresh token rotace. Když nový přístupový token je požadováno ověření s obnovovací token a poskytnout nový přístup tokenu a nový refresh token a refresh token je aktualizován v databázi. Nicméně nemyslím si, že můžeme ukládat seznam všech obnovovací tokeny generované tak daleko, jak je uvedeno v automatické opakované použití detekce
Raghul Raman
0

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í.

2021-11-24 09:11:17

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................