Sto progettando un'architettura di app utilizzando OAuth 2.0. Ho un server di risorse e server di autorizzazione separati. Quest'ultimo mantiene un database di utenti e gli ambiti a loro disponibili.
Ora, la mia domanda è: Come e dove archiviare / modellare le autorizzazioni a grana fine, per risorsa?
Sto parlando di uno scenario simile a quello che succede in un'app di condivisione file, ad esempio Dropbox, in cui l'utente può scegliere quali file condividere con quali altri utenti . Come modellarlo nel contesto di OAuth?
In particolare, nel mio caso alcuni utenti potrebbero esistere puramente nel database del server di autorizzazione (il server di risorse non ne conosce affatto). Chiamiamoli "utenti di sola lettura"; in AS avrebbero accesso a un ambito di read_files_shared_to_me
. E quindi, quell'ambito è la concessione / token che la mia app client mostra al server di risorse quando si richiede una particolare risorsa (file). Ora, come devo sapere quali file sono condivisi con quali utenti, nel framework di OAuth (2.0)?
- Se è responsabilità del server di risorse , come dovrebbe memorizzare l'elenco di utenti "consentiti", se gli utenti esistono solo in server di autorizzazione ? Se RS utilizza "endpoint di introspezione token" di AS per visualizzare in dettaglio le richieste dell'utente specifico e memorizzare un elenco di "utenti consentiti" per risorsa ("ACL")?
- Se è responsabilità di Server di autorizzazione , come deve passare le informazioni su "risorse disponibili per questo utente" a RS ? Da ciò che capisco, gli "scope" sono piuttosto generali, corrispondono a "ruoli / gruppi", non a concrete risorse a grana fine, quindi inserire un elenco di ID di risorsa in un campo "ambito" di autorizzazione concessione / token di accesso non sembra OK?
1 Dopo ulteriori ricerche, ho trovato un thread 2011 con domande simili sulla mailing list [oauth-wg] . Alcune risposte suggeriscono di guardare "UMA". Sfortunatamente, i collegamenti sembrano essere sia un po 'marci, sia troppo vaghi. La apparente pagina principale di UMA sembra enorme e ancora poco chiara per me. Inoltre, non è chiaro per me se è ancora pertinente e aggiornato nel 2018. Facendo un giro su UMA non sono riuscito a trovare risultati utili. Se "usa UMA" è ciò che vorresti scrivere come risposta, prova a spiegare un po 'di più su come dovrei applicarlo. Inoltre, conosci i servizi concreti che utilizzano UMA per questo scopo?