Ho appena letto questo eccellente tutorial su OAuthv2 ma mi mancano ancora alcuni concetti importanti relativi alle autorizzazioni.
Fondamentalmente non sto capendo la necessità dei due cicli di richiesta / risposta tra l'app del client e il server di autorizzazione, dove:
- Per prima cosa l'utente viene reindirizzato al server di autenticazione durante una richiesta di autorizzazione , in base alla quale (in caso di autenticazione riuscita), riceve un codice di autenticazione ; e poi
- Successivamente, l'app client effettua una seconda richiesta token al server di autenticazione, in cui il server di autenticazione convalida l'ID del client, il codice segreto e di autenticazione e restituisce un token di accesso per usarlo
Codici di autenticazione e token di accesso
Qual è la differenza tra questo "codice di autenticazione" e questo "token di accesso"? Perché devo prima generare un codice di autenticazione in modo da poter ottenere successivamente un token di accesso?!? Perché non fare tutto questo in 1 roundtrip e ottenere un token di accesso in caso di autenticazione avvenuta con successo?
Accedi ai token e ai server di risorse
Suppongo che il punto principale del token di accesso sia quello di fungere da corridoio per le richieste future, in modo che le app client non rianalgano ogni richiesta successiva. Ergo Suppongo che, con un token di accesso valido, le app client possano ora "parlare direttamente" con i server delle risorse. E suppongo che, dopo aver ricevuto ogni richiesta, i server di risorse probabilmente convalidino i token di accesso con i rispettivi server di autenticazione. Sono in pista qui o fuori base?
Token di accesso e SSO?
I token di accesso possono essere utilizzati in uno scenario SSO in cui sono presenti più server di risorse che utilizzano lo stesso server di autenticazione? Significato, una volta che effettuo l'autenticazione con un server di autenticazione e ricevo il mio token di accesso da esso quando Sono all'interno di 1 app SSO, posso quindi eseguire la migrazione a un'altra app SSO e applicare lo stesso token di accesso (supponendo che non sia ancora scaduto) ed essere "connesso" alla seconda app, senza dover eseguire nuovamente l'autenticazione?