2010-08-19 47 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";