Risposta breve è che non è definito. Se vuoi una libreria che supporti entrambi, assicurati che supporti esplicitamente sia OAuth 2 che OIDC.
Se si dovesse disegnare un diagramma di Venn, OAuth 2 e OIDC si intersecano tra loro ma OAuth 2 definisce anche alcuni flussi che OIDC non estende, e OIDC aggiunge un flusso che non si trova in OAuth 2.
Flussi OAuth 2 :
- Sovvenzione del codice di autorizzazione
- Concessione implicita
- Credenziali password proprietario risorse Concedere
- Concessione di credenziali client
flussi OIDC :
- Sovvenzione del codice di autorizzazione
- Concessione implicita
- ibrida
La specifica OIDC estende esplicitamente il codice di autorizzazione di OAuth 2 e i flussi impliciti, ma non dice nulla sugli altri. Pertanto, una determinata implementazione OIDC può supportare completamente o parzialmente i restanti flussi OAuth 2. In sostanza intendo, restituisce il token di accesso solo come OAuth 2, ma non come token ID.
Quindi perché OIDC non copre esplicitamente tutti i flussi di OAuth 2? Ecco cosa penso:
- Concessione di credenziali password proprietario risorse. Questo flusso vanifica le funzionalità di sicurezza introdotte dalla concessione del codice di autorizzazione di OAuth 2. Dal punto di vista della sicurezza, stai lontano da questo flusso.
- Concessione di credenziali client. Un esempio di questo scenario è il servizio per la comunicazione di servizio, che potrebbe essere risolto con PKI - non ha bisogno di token ID introdotto da OIDC.