多站点登录ala Google

时间:2008-10-07 20:20:09

标签: language-agnostic

不确定标题是否适合该问题,但我想不出任何其他方式来表达它..

假设您想创建多个不同的Web应用程序,但您希望登录到一个应用程序的用户能够直接访问您的其他应用程序而无需重新登录(假设他们有权限查看其他应用程序以及)。如果我没记错的话,如果你登录了gmail,你可以直接进入iGoogle,googleReader等,无需重新登录(如果你设置正确的话)。

你会怎么做?你会用什么?假设应用程序已存在,您不想更改用户的初始登录页面。

5 个答案:

答案 0 :(得分:6)

您要找的是Single Sign On。如果您点击链接,您会发现几个实现。

其他人提到的开放ID不是这样的方案,因为它需要为每个站点单独登录。 Open ID仅仅是一个共享的身份验证系统。

答案 1 :(得分:3)

您可以针对foo.com发布一个cookie,然后在app1.foo.com,app2.foo.com上显示。

然后,每个应用程序都可以使用cookie访问集中式身份验证系统。

答案 2 :(得分:3)

尝试CAS它应该提供您正在寻找的功能。

答案 3 :(得分:2)

您想要的是单点登录(SSO)。

有两种方法可以解决这个问题:

  1. 滚动您自己的实现。在最简单的形式中,它可以通过第一个站点设置一个cookie来实现,该cookie保存登录用户的票证,第二个站点验证该票证并接受登录用户。这里有很多潜在的陷阱:

    • 您必须保护自己免受信息泄露 - 确保故障单不包含实际的用户凭据
    • 你必须保护自己免受欺骗 - 一名中间人窃取有效的机票并冒充你的一个用户
    • 和其他人
  2. 采用第三方SSO机制。谷歌,微软,Facebook和其他大公司允许与他们的身份提供商集成,以便您的用户可以登录他们的网站,他们处理验证,发票等。还有OpenID,这是一个开放式协议,您可以使用它通过几乎任何支持OpenID的身份提供程序在您的站点上启用SSO。这里的潜在缺点是,其他人控制您对用户身份的访问权限,并且可能会限制您可以提供的功能以及您可以为用户挖掘的数据。

答案 4 :(得分:0)

如前所述,您可以使用类似OpenId或类似的东西来简化流程。否则,如果您自己滚动,则可以使用cookie来存储登录,那么基本上所有应用程序都必须具有模仿基本URL的入口点。

例如,谷歌使用mail.google.com作为Gmail的pipline,允许它读取存储在google.com域中的cookie。