Sto cercando di individuare il modo migliore per proteggere un'API utilizzando gli ambiti o le rivendicazioni oAuth. Non sono sicuro su cosa dovrei usare.
La mia configurazione è la seguente:
-
Tutti gli utenti eseguono l'accesso a
signin.domain.com
-
Esistono più client
www.domain.com
eadmin.domain.com
-
Esiste un server di risorse
api.domain.com
-
Esistono più ambiti
data.read
edata.write
-
www.domain.com
richiede un scopedata.read
eadmin.domain.com
richiede entrambi gli ambitidata.read
edata.write
-
Alcuni utenti che sono amministrazioni devono essere in grado di scrivere dati (ad esempio POST su api.domain.com) ma tutti gli utenti autenticati possono leggere.
A quanto ho capito, gli utenti che accedono utilizzando il client www.domain.com
non riceveranno un token contenente l'ambito data.write
anche se il client lo richiede.
Ho letto che gli ambiti sono tipi di categorie di rivendicazioni [1]. Questo significa che se un client richiede un ambito specifico ho bisogno di popolare il token con tutte le attestazioni correlate a quell'ambito?
Da lì il mio server delle risorse controlla se l'utente ha il reclamo corretto?
Oppure, il server delle risorse controlla che il token abbia l'ambito corretto in esso?
In entrambi i casi, non è possibile assegnare gli scope agli utenti, solo ai client e non è sufficiente dire "accesso dell'utente tramite client x in modo da ottenere i permessi di scrittura". Quindi sembrerebbe che la mia prima ipotesi sembra l'unica corretta.
Sarei grato se qualcuno potesse chiarire come utilizzare gli ambiti e le attestazioni per fornire accesso API granulare,
Fonti:
[1] link