在网站之间安全地转移用户

时间:2009-12-08 17:09:37

标签: security multiple-domains

以下是该方案:

  • 您有两个独立的网站存在于不同的环境中(I.E.不同的数据库,不同的Web服务器/域)
  • 您可以完全控制两个站点的代码,但从上面来看,它们无法直接与彼此的数据库进行通信
  • 您必须安全地将用户从站点A转移到站点B

实现此目的的最佳方法是什么?简单地通过查询字符串在站点之间发送用户标识符即使加密也不安全,因为其他人可以获取URL。似乎标准解决方案是传递用户标识符以及网站A创建的另一个临时密钥,并且网站B知道。如果是这种情况,使用临时密钥安全地设置系统的正确方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:2)

我正在做这样的事情。我现在能想到的最好的事情就是传递用户ID的HASH,或者如果这让你担心,那就是其他一些用户数据的哈希。

如果你想要临时密钥(我也可能会做这样的事情),那么如何在B上设置一个Web服务,B可以调用它来获取基于临时密钥的用户ID。这样,它就是一个完全独立的呼叫,并且可以保护。

答案 1 :(得分:2)

看看“Pass-through Authentication,"它的概念,允许用户的身份从一个系统传递到另一个系统。

此外,您可能想要尝试的另一个想法是创建一个安全令牌,该令牌不会公开用户的信息并将其传递。但是,这要求两个系统都具有相似的数据来验证令牌。正如另一个答案所暗示的那样,散列非常适合用于创建关于敏感信息的非描述性位。

答案 2 :(得分:1)

在两端通过HTTPS编写Web服务调用,以检索用户详细信息,并且仅适用于特定的登录对。问题解决了。您需要使两端的登录ID统一使用Cookie上的单点登录。 Vipin Samar在论文中的更多细节:"Single Sign on Cookies for Web Applications"

他们无法获取URL /密码,除非他们进入其中一个服务器的应用程序代码。

答案 3 :(得分:0)

您需要在站点A和站点B之间传递信息,但您不需要让用户成为该信息的管道。

站点B可以拥有一个Web服务,允许站点A为用户创建会话。在此设计中,交互将如下:

  • 用户点击网站A上的按钮
  • 站点A调用站点B上的Web服务,该服务将临时登录URL传递回站点A
  • 网站A将用户重定向到网站B上的临时网址