Come delegare il rinnovo del token di aggiornamento in un SOA

-1

Quindi, abbiamo SOA sul backend (BE) e sul frontend (FE) abbiamo micro-frontend (i micro-frontend separati sono caricati come componenti nell'app frontend quando necessario, quindi il processo interno le chiamate tra di loro sono possibili, a differenza dei servizi di back-end, dove devono essere effettuate chiamate tra processi).

Sulla BE abbiamo un servizio Auth e un altro servizio Bananas . Sulla FE abbiamo anche un auth micro-frontend e qualsiasi altro bananas micro-frontend. Immagina che access token di un utente sia scaduto e effettua una richiesta a /bananas/create . Ognuno dei nostri servizi BE ovviamente convalida il token di accesso ricevuto su ogni richiesta e, se invalido, restituisce 401 . Vogliamo implementare la funzionalità refresh token (il token di aggiornamento verrà passato insieme al token di accesso con ogni richiesta).

Ora la domanda è: se viene ricevuta una richiesta con un token scaduto:

  1. dovrebbe essere il servizio Bananas , quando si vede il token è scaduto, fai un chiama al servizio Auth per convalidare refresh token e ricevi una nuova coppia di token, quindi esegui il business delle banane e rispondi con le coppie di token + i dati effettivi sulle banane. Chiamata All in 1. Oppure ...
  2. se il Bananas restituisce ancora 401 , il micro-frontend banane delega al micro-front-end auth per chiamare il servizio Auth per nuovi token, quindi restituirlo al micro-frontend banane e fai una nuova chiamata al servizio Bananas , con token validi?

Questo è il dilemma del design tra me e il mio collega. Il mio punto è che non desidero avere 3 richieste di risposta alle richieste di risposta. Sostiene che il servizio Bananas dovrebbe sempre restituire solo i dati delle banane nei suoi oggetti risposta e non avere casi in cui restituisce anche coppie di token.

Per come la vedo, entrambi i nostri punti sono validi, ma non abbiamo l'esperienza e le conoscenze per decidere quale ha una priorità più grande / quale è il design migliore.

    
posta Milkncookiez 04.05.2018 - 00:31
fonte

1 risposta

1

2.

Il front-end possiede l'auth, quindi il front end dovrebbe gestirlo. Personalmente, avrei un sottile front-end layer che orchestra i componenti (e gestisce l'utente / l'autenticazione / l'autorizzazione necessaria a tutti loro). Ma il tuo collega ha ragione nel dire che le API dovrebbero restituire gli stessi tipi di dati per ogni chiamata. Richiesta / risposta / richiesta avverrà di volta in volta per questo (e concorrenza ottimistica se applicabile e tipo di rete transitoria di tentativi di errore) e può essere mitigata aggiornando leggermente il token prima del tempo.

    
risposta data 04.05.2018 - 01:32
fonte

Leggi altre domande sui tag