Ho letto molte domande e risposte su questo forum affermando che oAuth è per l'autorizzazione, OpenID è per l'autenticazione e più di alcune di esse dicono che OpenID Connect fornisce l'autenticazione abusando dell'autorizzazione oAuth.
Perché il tono derogatorio? C'è un'implicazione molto strong che questo sia male, ma non ho trovato alcuna spiegazione per questo, e mentre capisco la differenza tra autenticazione e autorizzazione, non capisco dove qualcuno dovrebbe usare l'autorizzazione senza autenticazione, o più esattamente, senza imputabilità.
In realtà non è vero, se provo, posso pensare a situazioni in cui l'attribuibilità non è importante, ma non funzionerà per la mia situazione: sto lavorando a un servizio online che consentirà le registrazioni dagli utenti che utilizzano FB, Twitter , Google+ e probabilmente LinkedIn per l'autenticazione. Le applicazioni front-end (basate sul Web e mobile, potenzialmente controllate da terze parti) dovrebbero, a mio avviso, utilizzare oAuth per accedere ai servizi API / back-end per conto di un utente.
Ad esempio, se ottengo una richiesta da un'app mobile front-end o da un sito web per accedere ai messaggi di un utente, forse mi piace:
Avrei bisogno di sapere che l'utente che ha effettuato l'accesso all'applicazione o al sito Web non è solo autorizzato a leggere la risorsa dei messaggi, ma è di fatto l'utente che può leggere quella specifica casella postale.
Ma sto divagando, quindi: OpenID Connect è cattivo in qualche modo? Ho visto il diagramma di Wikipedia ... qualcuno può spiegare cosa c'è di sbagliato in quella foto?
In definitiva sto cercando di capire quali sono tutti i pezzi del puzzle per creare un'architettura in cui:
a) Gli utenti si registrano sul back-end e sono autenticati tramite
OpenID / Google / FB / ecc
b) Gli utenti accedono al servizio tramite un front-end indipendente, ad esempio a
app per dispositivi mobili o sito Web
c) Utenti diversi hanno ruoli diversi (es. personale e clienti) e
non può accedere ai dati personali o sensibili degli altri
d) È un servizio multi-tenant, quindi lo staff della società A potrebbe
essere effettivamente clienti della società B e della società C!
FWIW: alcune cose che ho visto, che aiutano a confondere / chiarire le cose per me:
- oAuth 2.0 fornisce autorizzazione
- La pagina sopra dice oAuth intende fornire un'autorizzazione senza condivisione dell'identificazione; allora come si ottiene l'attribuibilità?
- OpenID Connect utilizza oAuth 2.0 e fornisce l'autenticazione
- La pagina sopra menzionata afferma che oAuth 2.0 è stato progettato per supportare sviluppo di autorizzazione E PROTOCOLLI DI AUTENTICAZIONE
- OpenID Connect fornisce quindi sia l'autenticazione che l'autorizzazione?