2015-12-16 174 views
6

我有兩個應用程序(一個.NET和其他Angular SPA(.NET中的Web服務))具有相同的域名,我需要爲這兩個應用程序啓用SSO。 config具有相同的機器密鑰,並且它們啓用了表單身份驗證模式。C#Forms身份驗證.ASPXAUTH Cookie的SSO

我登錄到.NET站點,在iframe中呈現角度站點。當打開iframe時,API調用包含.ASPXAUTH cookie請求標題但HttpContext.User.Identity.Authenticated設置爲false,因此它返回404並重定向到iframe中角度站點的登錄頁面。

auth cookie是HttpOnly,因此角度無法讀取它但是si如果cookie是在請求頭中設置的,則API(.NET)方法應將其視爲已認證,而不是。我錯過了什麼?

+0

你是否對這兩個應用程序使用相同的auth cookie名稱? – AMember

+0

是的,它的.ASPXAUTH – Dave

+1

我會開始在API請求上檢查'FormsAuthentication.Decrypt(HttpContext.Request.Cookies [FormsAuthentication.FormsCookieName] .Value)',以便您可以確保傳遞的值可以被解密幷包含有效的用戶標識符可以使用API​​ – Lanorkin

回答

2

有一些信息可能無法正確回答這個問題,但我認爲這與相同的原產地政策有關。您必須明確設置iFrame的來源,以便您的Cookie不被識別爲跨站點請求。因此不會被ASP.net應用。您的原始http標頭必須設置爲有效的來源和引薦來源。

請再看看這個question。它簡要解釋了同源政策。