Sto utilizzando Spring Security Oauth2 come livello di sicurezza nella mia applicazione. Tutto ha funzionato bene finché non sono apparse contemporaneamente chiamate asincrone.Oauth2; Come risolvere il problema con AccessToken scaduto durante più chiamate async asincrone, effettuate contemporaneamente?
Qualcuno può dirmi come gestire il caso successivo:
1. Il client ha un AccessToken che è già scaduto.
2. Il client effettua due chiamate asso asincrone contemporanee alla mia API (ad esempio: Thread1, Thread2).
3. Thread1 riceve un errore: "accessToken expired", prima di Thread2.
4. Utilizzando la Thread di refreshToken1 riceve un nuovo accessToken = qqqqq.
5. Il Thread2 riceve un errore: "access token scaduto", prima di Filettatura1 fa una nuova chiamata al server con il nuovo access token = qqqqq.
6. Usando il refreshToken Thread2 riceve un nuovo access token = wwwww e rimuove l'access token = qqqqq.
7. Qui, il Thread1 effettua una chiamata al server con accessToken = qqqqq che non è attivo.
8. In teoria, è possibile eseguire il loop di entrambi i thread invalidandoli a vicenda.
Io apprezzo tutto l'aiuto, grazie.
La ringrazio molto. Ho il controllo sul client, quindi userò la versione "accessToken". Grazie ancora. –
Il mio Java è arrugginito ma nel codice di esempio c'è ancora una condizione di competizione, giusto? Due thread potrebbero potenzialmente vedere che il token è la versione corrente e quindi provare a eseguire un aggiornamento, con una sovrascrittura indeterminata dell'altro. – JimmidyJoo