Un token di accesso dovrebbe riflettere i ruoli utente correnti?

2

Un utente con il ruolo "A" richiede un token di accesso al momento t , che scade tra 12 ore; dopo 6 ore, il ruolo "B" è concesso all'utente oltre al ruolo "A".

Il token dovrebbe assegnare il ruolo utente "B", anche se il ruolo non è stato assegnato al momento in cui è stato richiesto il token?

UPDATE Come notato da Mike Scott nella sua risposta, la modifica dei ruoli utente dovrebbe avere effetto immediato. Mi piacerebbe rendere la mia domanda più specifica: quando i ruoli degli utenti cambiano, i token attivi dovrebbero riflettere la modifica che garantisce i ruoli aggiornati se dovessero essere invalidati / revocati?

In altre parole: le autorizzazioni concesse da un token dovrebbero essere immutabili?

    
posta Giovanni Lovato 09.10.2017 - 14:17
fonte

3 risposte

2

Non c'è necessariamente una risposta corretta alla domanda. È davvero facile dire "certo che dovrebbero" e in qualche modo più difficile farlo accadere.

Dato che si imposta un token con attestazioni anziché solo un identificatore, si presume che non si voglia contattare il server di autorizzazione ogni volta che si riceve il token. Ciò significa che devi rispettare la validità / scadenza del token.

Se non ti dispiace contattare il server di autorizzazione con ogni richiesta, non devi impostare le attestazioni nel token, puoi sempre riceverle dal server e saranno sempre aggiornate.

OAuth viene solitamente utilizzato tra più parti e potresti controllare tra 1 e tutte. Quanti controlli controlli possono influenzare ciò che puoi e non puoi fare. La revoca del token non è possibile senza una richiesta aggiuntiva al server di autenticazione

    
risposta data 09.10.2017 - 19:31
fonte
1

Fai la domanda all'opposto, e la risposta è ovvia. Se l'utente ha il ruolo B revocato mentre il suo token è attivo, l'accesso deve essere revocato immediatamente. Quindi potresti anche avere immediatamente tutte le modifiche di accesso.

    
risposta data 09.10.2017 - 14:42
fonte
0

Un token è per l'autenticazione, non per l'autorizzazione. Un token non deve contenere informazioni diverse da quelle necessarie per verificare l'autenticità. Un token di per sé non fa nulla, di solito è associato a un account, un ruolo o una risorsa. Quindi:

Token T per l'utente A con ruolo R deve specificamente concedere l'autenticità al portatore per agire come utente A o come utente A in combinazione con il ruolo R.

Nel caso del tuo scenario:

  • se il token T è valido per l'utente A, i ruoli assegnati al momento dell'utilizzo del token T saranno disponibili per il portatore, indipendentemente dallo stato nel momento in cui è stato emesso il token

  • se il token T è valido per l'utente A in combinazione con il ruolo R, nel momento in cui viene utilizzato il token, l'autenticazione avrà esito positivo solo se l'utente A ha ancora il ruolo R assegnato

Potresti migliorare la velocità di autorizzazione revocando tutti i token sugli eventi di mutazione degli utenti, se desiderabile.

Per i token standalone o offline questo non funziona, ma anche in questo caso i token non sarebbero comunque efficaci in quanto non possono essere revocati.

    
risposta data 14.10.2017 - 05:11
fonte

Leggi altre domande sui tag