我们对一系列网站的实施有一个单一的标志,其中认证cookie来自根域(例如bar.com),允许他们登录到子域(例如foo.bar.com)。使用标准.net表单身份验证在C#中实现。
不幸的是,我们的一些用户正在通过反间谍软件删除他们的身份验证Cookie。我已经能够通过使用PC Tools Anti Spyware和IE8来重现这种情况。
实际结果是用户登录网站,导航到另一个页面,然后再被要求登录。
反间谍软件将Cookie标记为低风险跟踪Cookie。
有没有什么方法可以让我的用户的反间谍软件看起来更挑剔的味道更适合?
更新
我调查了领先的“。”问题,这是一个红鲱鱼。 IE Doesn't care并且,正如我通过this post发现的那样,RFC 2965 Specification要求实施者提供一个前导点。
进一步阅读引导我阅读文章"Privacy alert: Cookie variants can be used to skirt blockers, anti-spyware tools"。从本质上讲,许多网站都使用子域作为隐藏跟踪cookie的方式。
看起来某些反间谍软件会尊重父域上的P3P (Platform for Privacy Preferences)声明。不幸的是,由于缺乏浏览器实现者的支持,P3P上的工作暂停了。
在这个阶段,我认为问题的解决方案将是一个用户建议的:子域需要创建自己的身份验证cookie。
答案 0 :(得分:1)
您可以检查SAML SSO协议规范中的默认传输以获得更多想法。存档与所有文档在这里http://docs.oasis-open.org/security/saml/v2.0/saml-2.0-os.zip查看协议描述的“断言和协议”和可能传输的“绑定”(特别是在重定向和POST)。
如果当前用户经过身份验证,则以某种方式查询SSO服务器,然后使用自己的cookie缓存该状态。这样每个应用程序都只在自己的域上设置cookie。
答案 1 :(得分:1)
我建立了这样一个系统。有一个域可以登录(auth站点)。如果登录成功,则会将用户从auth站点重定向到使用一次性令牌启动登录的站点。然后该网站设置自己的cookie并让你的叔叔摔倒。当您注销时,您必须直接转到auth站点,该站点会删除cookie作为重定向回站点的一部分。然后,您的网站会删除自己的Cookie。哈哈哈希望有道理!
答案 2 :(得分:0)
您可以检查您的身份验证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
,这里是link。我会从那里开始。