2015-12-16 17 views
6

Mam 2 aplikacje (jedna .NET i inne Angular SPA (usługi sieciowe w .NET) z tą samą nazwą domeny .Musimy włączyć SSO dla tych 2 aplikacji. config mają ten sam klucz maszynowy i są włączone dla trybu uwierzytelniania FormsC# Uwierzytelnianie formularzy .ASPXAUTH Cookie dla SSO

Po zalogowaniu się do witryny .NET, przedstawiam kanciastą stronę w iFrame. Podczas otwierania iframe wywołanie API obejmuje plik cookie .ASPXAUTH nagłówek żądania, ale HttpContext.User.Identity.Authenticated ma wartość false, więc zwraca 404 i przekierowuje do strony logowania dla kanciastej strony w elemencie iframe. ale si Jeżeli plik cookie jest ustawiony w nagłówku żądania, metoda API (.NET) powinna uznać go za uwierzytelniony, a nie jest. Coś, czego mi brakuje?

+0

Czy używasz tej samej nazwy cookie auth dla obu aplikacji? – AMember

+0

tak, jego .ASPXAUTH – Dave

+1

Zacznę od sprawdzenia czegoś w rodzaju 'FormsAuthentication.Decrypt (HttpContext.Request.Cookies [FormsAuthentication.FormsCookieName] .Value)' na żądanie API, dzięki czemu można upewnić się, że przekazana wartość może zostać odszyfrowana i zawiera poprawny identyfikator użytkownika, który może być użyty przez API – Lanorkin

Odpowiedz

2

Brakuje pewnych informacji, aby uzyskać odpowiedź na to pytanie poprawnie, ale myślę, że ma to coś wspólnego z tą samą polityką pochodzenia. Musisz wyraźnie ustawić pochodzenie ramki iFrame, aby plik cookie nie był rozpoznawany jako żądanie przekierowania. I dlatego nie będą stosowane przez ASP.net. Twój początkowy nagłówek http musi być ustawiony na prawidłowy początek i odsyłacz.

Proszę również spojrzeć na to question. Wyjaśnia krótko politykę tego samego pochodzenia.

Powiązane problemy