Este în siguranță pentru a expune refreshtoken API

0

Problema

Am o aplicație dezvoltată folosind Reacționa în front-end și ASP.Net Web API în backend. Eu sunt, folosind JWT pentru autorizare. Procesul este

  1. Atunci când un utilizator se loghează și este autentificat, 2 token-uri sunt trimise la front-end, token de acces și de reîmprospătare token. Un token de acces este JWT și o reîmprospătează token este un șir aleatoriu și o reîmprospătare token-ul este stocat într-o bază de date.
  2. Pentru fiecare apel ulterior la APIs token de acces este atașat în antet, am o autentificare filtru care validează token-ul de acces.
  3. Odată token-ul de acces este expirat, un 401 stare este aruncat cu mesajul de eroare TokenExpired.
  4. Odată front-end primește 401, se numește refresh semn API pentru a obține refresh token

Întrebarea pe care o am este ca nu pot avea un filtru de autentificare pentru a valida accesul semn de refresh jetoane API ca se va arunca 401 din cauza expirat token de acces, așa că am nevoie pentru a face refresh semn API pentru a fi anonim, astfel încât să nu lovit de autentificare filtru. Dacă am face anonim, eu fac un apel la baza de date pentru a obține refresh semn stocate pentru utilizator și se compară cu cea pe care am primit de la front-end. Deci, este sigur de a face refresh semn API anonim, daca nu asta e cel mai bun mod?

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

La Auth0, a Creat un set de caracteristici care să atenueze riscurile asociate cu utilizarea de reîmprospătare jetoane prin impunerea unor măsuri de protecție și controale pe durata ciclului lor de viață. Identitatea noastră platformă oferă reîmprospătare semn de rotație, care, de asemenea, vine cu automata reutilizarea de detectare.

Vă rugăm să citiți următorul subiect.

Refresh Semn De Rotație

Refresh Semn Automate De Detectare A Reutiliza

2021-11-24 05:56:21

Vom face un fel de refresh semn de rotație. Atunci când un nou token de acces este solicitată vom valida cu refresh token-ul și să ofere un nou token de acces și un nou refresh token și reîmprospăta token-ul este actualizat în baza de date. Cu toate acestea nu cred că putem stoca lista de refresh de simboluri generat până în prezent așa cum am menționat într-automată de detectare a reutiliza
Raghul Raman
0

La JWT este semnat folosind prepartajată cheie secretă. De când e REST API în backend și apatrizi, jwt este folosit pentru autorizare și construi principal obiect

Cum spui tu, token-ul de acces reprezintă autorizația în aplicația dumneavoastră, dacă refresh token este expus apoi refresh token poate fi prezentat de un actor prost pentru a obține un token de acces se poate folosi pentru aceeași autorizație.

Folosind un prepartajată secret' indică JWT este un HMAC doar varianta de JWT, adică nu există nici o criptare care ar indica privată și cheia publică pereche deosebire de un 'prepartajată secret'. Deci JWT este, în esență, o semnătură pentru puposes de securitate caracteristici noi sunt asigurarea integrității că pretențiile JWT sunt bine formate și nu s-au schimbat de când a semnat. Aceasta înseamnă, de asemenea, același secret este folosit pentru semnarea la un capăt ca a fost folosit pentru a verifica dacă la celălalt capăt, același secret trebuie să fie folosit pentru a verifica o semnătură necesită ca ambele capete genera semnătura și atât de semnătură meci. Deci, nu există date este criptat, astfel încât nu date în JWT este sensibil și are nevoie să fie protejate.

Având în vedere acest context, atât de reîmprospătare și token de acces sunt un simplu JWT, care pot fi generate numai de către deținătorul de secret - dacă acestea sunt expuse acestea pot fi folosite pentru a face rău intenționat cererile atât timp cât acestea rămân valabile (nbf cerere).

În esență, acest tip de JWT poate fi utilizat în mod abuziv în cazul expus de a juca rolul de identitate secretul care a semnat JWT reprezintă, fără să știe de fapt secretul în sine, până la nbf cerere expiră token - și o reîmprospătare token este mecanismul de a extinde nbf susțin fără a avea secrete (ceea ce ar duce la o nouă semnătură, pentru că nbf afirmația s-ar schimba atunci când este utilizat).

Nu există o protecție de la token de acces reutilizare, este ndupă cerere. Dacă nu utilizați în prezent un nonce cerere puteți citi despre cum OIDC au pus în aplicare și de a face același lucru în aplicația. Dar cum ai zis, aplicația este apatrid, dar sperăm că backend are o formă de stat pentru a se asigura nici nonce reutilizarea și prevenirea JWT semnătura reutilizare. Pentru fiecare nonce la JWT modificările de semnătură, prin urmare, token-ul de acces modificările și pot fi folosite doar 1 data. Deci, dacă a furat-o este o condiție de rulare care utilizează token-ul în primul rând, care minimizează considerabil riscul, dar nu o soluție perfectă.

2021-11-24 09:11:17

În alte limbi

Această pagină este în alte limbi

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