Vogliamo utilizzare la sovvenzione implicita di OAuth2 come viene proposta per le applicazioni a pagina singola. Per le applicazioni JavaScript che non hanno una classica sessione Web. Le applicazioni hanno solo token di accesso che scadono dopo un'ora. Utilizziamo un servizio di autenticazione centrale (CAS) in cui l'utente può inserire una sessione.
All'inizio l'utente non ha alcuna sessione. Quando l'utente avvia l'applicazione JS, sposta l'agente utente nel CAS dove viene autenticato tramite le sue credenziali. Dopo l'autenticazione riuscita verrà reindirizzato all'applicazione JS con il token di accesso nel frammento.
Dopo poco tempo il token di accesso non è più valido e l'applicazione necessita di un nuovo token di accesso. Per questo l'applicazione sposta nuovamente l'agente utente sul CAS. Le domande sono: cosa dovrebbe fare il CAS?
-
L'utente ha già una sessione nel CAS. È consentito utilizzare questa sessione per autenticare l'utente? In questo caso l'utente non deve fornire nuovamente le sue credenziali.
-
Il servizio di autenticazione centrale potrebbe chiedere nuovamente le credenziali dell'utente.
A mio parere chiedere all'utente le sue credenziali una volta ogni ora è un po 'strano, quindi preferirei la prima soluzione. Ma sarebbe un modo valido per ottenere un nuovo token di accesso per quanto riguarda l'RFC OAuth2?
La RFC afferma " The implicit grant [...] relies on the presence of the resource owner
". Penso che la prima soluzione non si basa sulla presenza del proprietario della risorsa. Ad esempio, il proprietario della risorsa potrebbe lasciare il computer per alcune ore ma l'applicatino JS è ancora in esecuzione. Se un token di accesso diventa non valido, l'applicazione JS può ottenere un nuovo token di accesso semplicemente navigando verso il CAS che si autentica automaticamente tramite la sessione e reindirizza nuovamente all'applicazione JS. Questo viene fatto automaticamente senza la presenza del proprietario della risorsa.
Il CAS poteva solo essere sicuro che il proprietario della risorsa fosse presente se chiedesse nuovamente le credenziali. Ma ciò significherebbe chiedere le credenziali ogni 30 minuti.
Se queste opzioni non si applicano, come si può realizzare il passaggio (B) nella Figura 4 in 4.2 della RFC6749 per rinnovare i token di accesso?