Sto imparando su OAuth 2 e OpenID Connect . Leggendo le documentazioni, ritengo che le specifiche di OpenID Connect lascino dello spazio vuoto riguardo all'autenticazione dell'utente finale.
The methods used by the Authorization Server to Authenticate the End-User (e.g. username and password, session cookies, etc.) are beyond the scope of this specification.
Per un'implementazione di Authorization Server mi chiedevo quali siano i protocolli di autenticazione degli utenti finali più comuni.
Supponendo che TLS si trovi tra l'app per l'utente finale e il server di autorizzazione, così come la OAuth 2 Relying Party , non mi sento ancora a mio agio usando un semplice nome utente / schema password, come ci sono schemi molto più sofisticati disponibili, come Challenge / Response o persino l'autenticazione basata su chiave pubblica.
La mia lista dei desideri per lo schema di autenticazione implicherebbe i seguenti requisiti:
- Nessuna credenziale archiviata in chiaro sul lato server, supponendo che il database del server possa essere violato
- La minor quantità di credenziali in chiaro comunicate sul filo
- Un ulteriore livello di protezione (sotto TLS) per gli attacchi di riproduzione
Nel complesso, mi piacerebbe rimanere nel campo di applicazione fattibile per le app mobili utilizzate da John Doe, ad es. una struttura PKI con uno scambio di certificati sicuro che coinvolge un canale diverso o tale sarà eccessivo. Anche l'autenticazione a due fattori sarebbe carina ma non dovrebbe essere obbligatoria nella prima fase.
Potresti indicarmi i protocolli / standard che ho ignorato o non ho ancora trovato. Grazie!
Modifica: ho appena scoperto SCRAM , che sembra promettente. Se ci sono altri metodi di cui dovrei essere a conoscenza, apprezzo il tuo aiuto.