Sto progettando un flusso di lavoro di autenticazione JWT per un'API RESTful che utilizza due tipi di token:
- Token telefono , token di breve durata - emesso completando una richiesta di password One-Time. Il suo compito è dimostrare la "proprietà" di un telefono. Porta il numero di telefono.
- Token di accesso , token di lunga durata - emesso fornendo un token telefonico valido. Il suo compito è fornire l'identità del proprietario del telefono. Trasporta l'ID dell'utente.
Lamiadomandaècomestrutturarecorrettamentequeiduetokenesedovreiusareduechiavidifirmadistinteperloro?
Daquantohocapitol'oggetto(sub
)deltokentelefonicodovrebbeessereilnumeroditelefonoel'oggetto(sub
)deltokendiaccessodovrebbeesserel'IDdell'utente.(Modifica:nonnesononemmenosicuro,comepotrebbeilcontrollersaperecomeinterpretareilnumero,ovverocercarelarisorsagiusta?Nonsarebbemegliousarestringhecome"phone" e 'identità' per l'oggetto e fornire un campo 'id' aggiuntivo?)
E il campo emittente ( iss
), dovrebbe essere qualcosa come http://example.com/phone
e http://example.com/identity
?
E il campo pubblico ( aud
)? Il token del telefono ha un piccolo pubblico, cioè solo uno o due servizi, dovrei specificarli esplicitamente? Mi piace aud: ['identity', 'xyz']
?
In caso di token di accesso il pubblico è abbastanza ampio, cioè molti servizi che consumano questo token, e il pubblico potrebbe crescere quindi non voglio hardcode nel token, altrimenti dovrei rilasciare nuovi token ogni volta che aggiungo un servizio. Come potrei aggirare questo?
Sarei molto felice se potessi suggerire una possibile struttura e il ragionamento che ci sta dietro.