2015-11-12 6 views
5

mia struttura applicazioni è come qui sotto -OAuth condivisione gettone più applicazioni

https://democompany.com/ 
https://democompany.com/app1 
https://democompany.com/api 

utente accede al sito principale url https://democompany.com/logon.aspx che è un'applicazione ASP.NET WebForms.

l'applicazione app1 è un'applicazione di angularjs che utilizza l'app/api. api è l'applicazione webapi2 che utilizza il token oauth per l'autenticazione. Vorrei che l'utente effettuasse il login solo una volta su democompany.com/logon.aspx e passasse il token oauth all'applicazione angularjs.

Esiste un modo consigliato per passare token oauth da un'applicazione all'altra.

risposta

4

Finché le applicazioni utilizzano un sottodominio, è possibile utilizzare il lato client window.localStorage per tali scopi.

// to set token in storage  
window.localStorage.setItem('access_token', access_token); 
// to get token from storage 
access_token = window.localStorage.getItem('access_token'); 

Così avrete accesso a tale archivio da ogni pagina con qualche codice javascript. Per esempio con la combinazione di + angolare web.api è possibile l'installazione di token per ogni tua richiesta nel servizio http $:

$http.defaults.headers.common['Authorization'] = "Bearer " + token; 

Inoltre è possibile utilizzare interceptor a gettone messa a punto se si vuole avere un maggiore controllo del vostro codice.

+0

Il window.localStorage funziona nei browser ie8 e ie9? Grazie per aver risposto ! – Yousuf

+0

Non l'ho mai usato per ie8, ma secondo [questo] (http://stackoverflow.com/questions/3452816/does-ie8-out-of-the-box-have-support-for-localstorage) la risposta lo fa . Inoltre puoi vedere la tabella di compatibilità [qui] (http://www.w3schools.com/html/html5_webstorage.asp). –

+0

http://caniuse.com/#feat=namevalue-storage dice che, a meno che tu non stia usando IE6/IE7 o Opera Mini, dovrebbe funzionare ovunque incluso il cellulare. –

0

Credo che quello che stai descrivendo sia la definizione di cookie.