Non so se ho solo una sorta di punto cieco o cosa, ma ho letto le specifiche OAuth 2 molte volte e ho letto gli archivi della mailing list, e devo ancora trovare una buona spiegazione del perché la concessione implicita è stato sviluppato un flusso per ottenere i token di accesso. Rispetto alla concessione del codice di autorizzazione, sembra rinunciare all'autenticazione del client senza motivo molto convincente. Come viene "ottimizzato per i client implementato in un browser utilizzando un linguaggio di scripting" (per citare le specifiche)?
Entrambi i flussi iniziano allo stesso modo (fonte: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Il client avvia il flusso indirizzando l'agente utente del proprietario della risorsa all'endpoint di autorizzazione.
- Il server di autorizzazione autentica il proprietario della risorsa (tramite lo user-agent) e stabilisce se il proprietario della risorsa concede o rifiuta la richiesta di accesso del client.
- Supponendo che il proprietario della risorsa conceda l'accesso, il server delle autorizzazioni reindirizza l'agente utente al client utilizzando l'URI di reindirizzamento fornito in precedenza (nella richiesta o durante la registrazione del client).
- L'URI di reindirizzamento include un codice di autorizzazione (flusso del codice di autorizzazione)
- L'URI di reindirizzamento include il token di accesso nel frammento URI (flusso implicito)
Ecco dove si dividono i flussi. In entrambi i casi l'URI di reindirizzamento a questo punto è verso un endpoint ospitato dal client:
- Nel flusso del codice di autorizzazione, quando l'agente utente raggiunge quell'endpoint con il codice di autorizzazione nell'URI, il codice in tale endpoint scambia il codice di autorizzazione con le credenziali del client per un token di accesso che può quindi utilizzare secondo necessità. Ad esempio, potrebbe scriverlo in una pagina Web a cui potrebbe accedere uno script sulla pagina.
- Il flusso implicito salta del tutto questo passaggio di autenticazione client e carica semplicemente una pagina Web con script client. C'è un trucco carino qui con il frammento di URL che impedisce al token di accesso di essere passato troppo, ma il risultato finale è essenzialmente lo stesso: il sito ospitato dal client serve una pagina con qualche script in esso che può afferrare il token di accesso .
Da qui la mia domanda: cosa è stato guadagnato qui saltando il passaggio di autenticazione del client?