2010-08-19 38 views
2

我們有一個非SSL的ASP.NET Web應用程序,允許用戶登錄(ASP表單身份驗證,inproc)。如何保留ASP.NET窗體身份驗證Cookie,Http到Https(不同域)和身份驗證?

一旦通過驗證,我們重定向瀏覽器到外部,SSL安全頁面上的其他網站/域完全是我們無法控制。

完成時,客戶端被重定向回我們原來的http Web應用程序預配置的網址。

但是,客戶然後問我們這邊的這是不希望以「重新登錄」再次...

似乎在HTTP和HTTPS並再次返回過渡時的窗體身份驗證cookie被破壞。

我怎樣才能保持窗體身份驗證cookie活着,使客戶不會對往返重新進行身份驗證?

+0

FYI:本遠程SSL站點使用ASP,我們的站點使用ASP.NET。 – Konrad 2010-08-19 14:13:12

回答

1

它沒有被破壞;您沒有在您的域上進行身份驗證,因此Cookie未在您的域上設置,因此您的域上的請求將不包含所述身份驗證Cookie。

這是件好事。如果沒有發生這種情況,那麼您訪問的每個域名中的每個cookie都會隨每個請求一起發送。這顯然是1)瘋狂和2)安全漏洞。在mydomain.com上設置cookie應該從不對myotherdomain.com上的頁面可見。

如果您使用的是第三方認證系統,像谷歌,Facebook等,他們都會有某種回調令牌,你必須處理和設置自己的cookie。

+0

我正在對我的域進行身份驗證。我們正在使用表單認證。不知道我在第一段中理解了你的意思,並且我們沒有像上一段中提到的那樣使用第三方。 cookie應該仍然存在於客戶端瀏覽器緩存中,並且沒有過期,所以爲什麼它們在返回時不能再「拾起」呢? – Konrad 2010-08-20 06:46:43

+0

您寫道:「一旦通過身份驗證,我們就會將瀏覽器重定向到另一個網站/域上的外部SSL安全頁面。」身份驗證Cookie不會在域之間傳輸。 – jvenema 2010-08-20 13:04:01

0

你正在尋找一個單點登錄解決方案。 您的問題可能有點矯枉過正,您可能只想獲得相同的域名。但是,如果這是不是一種選擇,你可能想看一看: Windows Identity Foundation

1

考慮與更多的指定can be found here設置cookie的domain屬性爲您的Cookie或試試這個代碼:

Response.Cookies["your_cookie_name"].Domain = "yourdomain.com";