Come devo gestire un reindirizzamento a un provider di identità durante una richiesta di dati API web

6

Scenario

Ho un'applicazione web a pagina singola composta esclusivamente da html, css e javascript. Dopo il caricamento iniziale e durante l'uso, aggiorna varie visualizzazioni con i dati di uno o più apis RESTful tramite chiamate Ajax. L'API richiama i dati di ritorno in un formato json. Ogni web API può essere ospitata su domini indipendenti.

Domanda

Durante il call ajax, se il mio token di autorizzazione non è ritenuto valido dal web api, il web api mi reindirizzerà (302) al provider di identità per quella particolare api. Poiché si tratta di un richiamo ajax per i dati e non necessariamente per la visualizzazione, ho bisogno di trovare un modo per visualizzare la pagina di autenticazione del provider di identità. Sembra che dovrei intercettare quel reindirizzamento e aprire un'altra vista per visualizzare la pagina di accesso del provider di identità. Una volta completata la serie di reindirizzamenti oauth, ho bisogno di prendere il token e riattivare la mia chiamata dati ajax con il token allegato.

Questo è un approccio valido, e in tal caso ci sono esempi che mostrano la gestione ajax dei reindirizzamenti?

    
posta Erds 01.11.2012 - 21:14
fonte

1 risposta

4

I reindirizzamenti sono trasparenti al JavaScript chiamante. Rilevare un reindirizzamento da JavaScript non è (universalmente) possibile. Tuttavia, ci sono due cose che puoi fare:

  1. Rileva che i dati restituiti non sono JSON (ma HTML) e riaprono l'URL utilizzando un popup o iframe e gestiscono l'autenticazione.
  2. Modifica la tua API Web per restituire un'intestazione 401 Unauthorized per richieste non valide. Il corpo di quella risposta può contenere l'URL designato per l'autenticazione che il tuo JavaScript può gestire utilizzando un popup o iframe (come con 1.).
risposta data 06.11.2012 - 08:51
fonte

Leggi altre domande sui tag