Sto cercando di usare OAuth2 per l'autenticazione / l'autorizzazione, ma dopo aver letto molto, sono confuso ... Sto cercando di capire come OAuth e OpenIDConnect si relazionano tra loro e come posso usarli esattamente per AUTORIZZO.
Da quanto ho capito finora :
- OpenID Connect è la soluzione migliore per l'autenticazione, OAuth è la soluzione migliore per l'autorizzazione
- OAuth2 l'autorizzazione viene eseguita tramite gli ambiti
-
Un ambito è l'autorizzazione fornita dall'utente a un client, convalidato sul server delle risorse
-
un OpenID Connect id_token è inteso principalmente per l'applicazione client, per fornire informazioni utente e NON come un modo per il server di risorse per validare l'utente
Ecco il mio caso d'uso :
- Ho bisogno di fornire SSO a un set di servizi web completamente stateless creati da noi
- OAuth è limitato alla concessione di resource_owner
- Il server di identità viene fornito al nostro fianco e connesso a un server LDAP
- Solo le app di fiducia possono essere registrate come fornitori di servizi
E quello che sto cercando di fare, cosa che mi fa impazzire :
- Solo gli utenti autorizzati possono accedere a una determinata API del servizio web
Quindi, ho bisogno di un modo per verificare il permesso dato da un'entità esterna a un utente, al server delle risorse. Quale, a mio avviso, esclude l'utilizzo di OAuth per l'autorizzazione?
Non sono sicuro di come ottenerlo con OAuth / OpenID connect, o anche se si adatta al mio caso d'uso.
- L'accesso basato sui ruoli può essere fatto per funzionare con gli ambiti OAuth2?
- Sarebbe ok passare il id_token al server delle risorse, con un reclamo contenente i ruoli dell'utente (e scartare completamente il token di accesso)? Quindi id_token verrebbe usato sia per l'autenticazione che per l'amp; autorizzazione. Dato che id_token è firmato e contiene hash, andrebbe bene, giusto?
- Dovrei semplicemente autenticarmi con OpenIDConnect, controllando la presenza di id_token, eliminare del tutto access_token e sviluppare il mio sistema di autorizzazione basato sui ruoli?
Chiedo scusa per il muro di testo, non sono sicuro di aver frainteso lo scopo di OAuth / OpenID Connect qui. Sto facendo ipotesi sbagliate?
Grazie.