跨不同子域进行身份验证(但不是全部)

时间:2011-06-14 12:39:19

标签: php asp.net ruby-on-rails cookies http-authentication

我在www.domain.com上设置了一个网站,该网站可以对用户进行身份验证并将其凭据保存在Cookie中。

用户有时会访问在不同子域上的不同服务器上设置的处理程序。 handlers.domain.com

我负担不起使用通配符子域cookie(Cookie不应该用于其他子域名)

到目前为止,我的访问控制解决方案是,handlers.domain.com使用的每个网址都有一个特定于用户的guid。另一个站点上的处理程序将采用guid所有者的身份。这当然不是一个很好的安全措施。

我正在考虑另一种解决方案:handlers.domain.com的所有链接实际上都是指向www.domain.com上的重定向器脚本的链接,该脚本将重定向到handlers.domain.com上的加密时间戳记网址。然后确定它是作为www.domain.com的直接认证重定向访问的。 此解决方案在GET方案中可以正常工作,但是处理程序会因为期望POST数据而失败(上传大文件)

有没有人知道或者可以想出更好的解决方案或对我的解决方案有任何见解?

(在这种情况下,我使用的是ASP.NET,但解决方案可能与平台无关,因此我将使用各种Web平台进行标记)

谢谢!

2 个答案:

答案 0 :(得分:1)

由于您不想使用cookie来建立会话(请求组),您需要找到其他方法。由于cookie的信息在HTTP请求中是可读的,因此如果您将该信息作为POST请求的一部分传递,我不会发现问题。

如果您更喜欢GET请求,我还会在重定向之前在用户服务器端会话中添加一个标志,以便给作为重定向目标的脚本提供验证服务器上请求有效性的可能性 - 侧。

答案 1 :(得分:0)

你说你“不能使用通配符子域cookie(Cookies不应该用于其他子域名)”。这是否意味着您无法负担得起货币,或者您不希望用户访问所有子域?如果是第二个,您仍然可以通过使用该用户的ID输入加密值来使用子域cookie,并检查它与各个子域的访问权限。这使得服务器上的所有内容都比URL级别更安全。潜在黑客可以通过它的唯一方法是猜测另一个用户的ID并找出正确加密它的密钥。