2015-12-16 15 views
6

Ho 2 applicazioni (una .NET e un'altra Angular SPA (servizi Web in .NET) con lo stesso nome di dominio. Devo abilitare SSO per queste 2 applicazioni. config hanno lo stesso codice macchina e sono abilitati per la modalità di autenticazione Form.C# Forms Authentication .ASPXAUTH Cookie per SSO

Accedo al sito .NET, presento il sito angolare in iFrame. Quando si apre l'iframe, la chiamata API include il cookie .ASPXAUTH in l'intestazione della richiesta ma HttpContext.User.Identity.Authenticated è impostata su false. Quindi restituisce un 404 e reindirizza alla pagina di accesso per il sito angolare all'interno dell'iframe.

Il cookie auth è HttpSolo così angolare non è possibile leggere it. Ma si nce il cookie è impostato nell'intestazione della richiesta, il metodo API (.NET) dovrebbe considerarlo come autenticato e non lo è. Qualcosa che mi manca?

+0

stai utilizzando lo stesso nome di cookie di autenticazione per entrambe le applicazioni? – AMember

+0

sì, suo .ASPXAUTH – Dave

+1

Vorrei iniziare con il controllo di qualcosa come 'FormsAuthentication.Decrypt (HttpContext.Request.Cookies [FormsAuthentication.FormsCookieName] .Value)' su richiesta API, in modo da poter garantire che il valore passato possa essere decifrato e contenga identificatore utente valido che può essere utilizzato dall'API – Lanorkin

risposta

2

Ci sono alcune informazioni mancanti per essere sicuri di rispondere correttamente a questa domanda, ma penso che questo abbia a che fare con la stessa politica di origine. Devi impostare in modo esplicito l'origine di iFrame affinché il tuo cookie non venga riconosciuto come una richiesta cross-site. E quindi non verrà applicato da ASP.net. L'intestazione http di origine deve essere impostata su origine e referrer validi.

Si prega di dare un'occhiata a questo question. Spiega brevemente la politica della stessa origine.