I fornitori di risorse forniscono spesso accesso in lettura e scrittura alle risorse.
Pertanto, il fornitore di risorse dovrebbe non solo convalidare il token (è scaduto? è revocato? è valido? contiene l'ambito richiesto?), dovrebbero anche controllare i privilegi del token (usa XY avere privilegi sufficienti per leggere o scrivere risorsa ZY?).
Fino ad ora ho utilizzato il seguente flusso di lavoro:
- Il client riceve un token di accesso tramite la concessione del codice OAuth2.
- Il Cliente inoltra una richiesta per conto dell'utente ad es. %codice%
- Il Servizio risorse (chiamiamolo Post utente ) convalida il token effettuando una richiesta al server di autorizzazione, confermando che il token è valido. Inoltre, il server di autorizzazione passa i metadati come la data di scadenza del token, il pubblico del token, gli ambiti del token e l'oggetto del token (ad esempio, Utente XY)
- Il Servizio risorse ora convalida che il soggetto (ad esempio Utente XY) è autorizzato / autorizzato a eseguire la richiesta. Ad esempio controllando un elenco di controllo di accesso o simile. Ad esempio: supponiamo che l'utente XY desideri aggiornare un post dell'utente da parte dell'utente AB. Ad esempio, questo sarebbe disabilitato dalla Lista controllo accessi.
- Se la convalida supera, il server di risorse esegue la richiesta.
Questo è un modo valido di fare le cose o sto aprendo i vettori di attacco? Va bene che il Resource Server assuma che l'argomento del token sia quello da considerare la richiesta di autorizzazione? Ci sono forse buone pratiche o standard per risolvere questo?
Al momento sono confuso, perché ho letto che OAuth2 è solo una delega, non un'autorizzazione né un'autenticazione e che i client non dovrebbero assumere assunzioni implicite come "il token XY appartiene all'utente AB, quindi l'utente AB è autenticato" .
Qualsiasi aiuto è gradito.