Permessi di autorizzazione OAuthv2

5

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?

    
posta smeeb 12.09.2015 - 05:22
fonte

1 risposta

1

L'uso della concessione del codice di autorizzazione ti porta due cose che mancano in altre borse di studio.

  1. ti dà l'autenticazione sia dell'utente che del client. Fa l'autenticazione del client inviando l'ID del client e il segreto del client durante l'acquisizione del token di accesso.

  2. mantiene il token di accesso nascosto dall'agent user (tipicamente un browser), dove potrebbero essere rubati molto più facilmente.

La concessione implicita in realtà fa tutto questo in un round trip e quindi espone il token di accesso allo user-agent e non autentica il client stesso (solo l'utente).

È corretto che un client possa accedere alle risorse sul server di risorse utilizzando il token di accesso senza ripetere l'autenticazione di ogni richiesta. Il server delle risorse non ha bisogno di comunicare con il server di autorizzazione per convalidare il token poiché utilizza firme digitali per fidarsi del contenuto di il token.

I token di accesso possono essere utilizzati in scenari SSO, ma in genere il tuo agente utente tornerà al server di autorizzazione per ottenere un altro token di accesso per parlare con un altro server di risorse. Il tuo user-agent stabilirà una sessione (probabilmente cookie) con il server di autorizzazione per impedire la ri-autenticazione.

    
risposta data 12.09.2015 - 20:17
fonte

Leggi altre domande sui tag