9

我们为一系列网站提供了单点登录实现,其中身份验证 cookie 来自根域(例如 bar.com),允许它们登录到子域(例如 foo.bar.com)。该实现在 C# 中使用标准 .net 表单身份验证。

不幸的是,我们的一些用户的身份验证 cookie 被反间谍软件删除。通过使用 PC Tools Anti Spyware 和 IE8,我已经能够重现这种情况。

实际结果是用户登录网站,导航到另一个页面,然后被要求再次登录。

该 cookie 被反间谍软件标记为低风险跟踪 cookie。

有什么方法可以让 cookie 更适合我们用户的反间谍软件明显挑剔的口味?

更新:

我已经查看了领先的“。” 问题,这是一个红鲱鱼。IE 不在乎,正如我通过这篇文章发现的那样,RFC 2965 规范要求实现者提供前导点。

进一步阅读使我看到了文章“隐私警报:Cookie 变体可用于绕过拦截器、反间谍软件工具”。从本质上讲,许多网站都使用子域作为隐藏跟踪 cookie 的一种方式。

看起来一些反间谍软件会尊重父域上的P3P(隐私偏好平台)声明。不幸的是,由于缺乏浏览器实现者的支持,P3P 的工作已经暂停。

在这个阶段,我认为问题的解决方案将像一位用户所建议的那样:子域将需要创建自己的身份验证 cookie。

4

3 回答 3

1

我建立了一个这样的系统。有一个域进行登录(身份验证站点)。如果登录成功,它会将用户从身份验证站点重定向到使用一次性令牌启动登录的站点。然后那个网站设置它自己的 cookie 并鲍勃你的叔叔。当您注销时,您必须直接进入身份验证站点,该站点会删除 cookie 作为重定向回站点的一部分。然后,您的网站会删除自己的 cookie。哈哈哈希望有道理!

于 2010-02-17T21:32:52.917 回答
1

您可以检查 SAML SSO 协议规范中的默认传输以获得更多想法。包含所有文档的存档在这里http://docs.oasis-open.org/security/saml/v2.0/saml-2.0-os.zip查看“断言和协议”以获取协议描述和“绑定”以获取可能的传输(特别是在重定向和 POST 时)。

常见的想法是,如果当前用户已通过身份验证,则以某种方式查询 SSO 服务器,然后使用自己的 cookie 缓存该状态。这样,每个应用程序只在自己的域上设置 cookie。

于 2010-02-17T08:20:55.933 回答
0

您可以检查您的 auth cookie 是否使用.bar.com应该在www.bar.com, foo.bar.com, . 工作的域etc.bar.com

这种确切的行为取决于浏览器,但这是允许跨多个子域的相同 cookie 的常见做法。请注意,如果您最初设置了身份验证 cookie,www.bar.com那么好的浏览器应该拒绝它,foo.bar.com但不会拒绝foo.www.bar.com

我说得有道理吗?:-)

更新:看起来您可以覆盖Web.config 部分中的 ,这是domain一个链接。我会从那里开始。<forms

于 2010-02-16T23:51:16.097 回答