在两个网站之间共享身份验

时间:2011-07-21 16:20:48

标签: authentication cookies oauth openid dotnetopenauth

在两个站点之间共享登录的最佳/适当技术是什么。

我有网站A和一些网站B.两种类型属于同一家公司,但B在客户端运行。我想要的是,用户在B中登录,当由于某种原因重定向到A时,他们不需要再次登录,他们可以在A中使用他们的帐户。

当然,该公司将为每个'B'用户进行登录。问题是用户可以在A或B中启动登录。

OAuth会这么做吗?或者OpenID会更合适吗?

另一个选项是在GET字符串中传递GUID令牌,其中包含生存的排序时间,仅对请求者的IP地址有效,但不确定用户是否可以通过同一网关访问网站。 / p>

由于

2 个答案:

答案 0 :(得分:8)

OAuth正是您所需要的。 OpenID提供的发现仅在用户选择要进行身份验证的人(而不是您的用例)时才有用。此外,OpenID更加复杂,是一种垂死的协议。

在您的方案中,服务器A是OAuth服务器(或OAuth 2.0中的授权服务器),服务器B是客户端。有很多方法可以实现这一点,但我建议您首先查看(并尝试)Facebook OAuth 2.0实现的工作原理。它会让你很好地了解所涉及的内容以及它们的一些扩展(例如显示),使其更加用户友好。

答案 1 :(得分:2)

您正在谈论单点登录。拥有网站A的公司是否在其api中提供远程登录?

您需要确保登录信息在传递到网站A时已加密。我构建的最后一次单点登录要求我传递通过RSA加密的用户AD名称并使用MD5进行哈希处理。第三方拥有用户的AD名称及其第三方站点密码的数据库。当用户点击链接时,他们的加密信息被发送到第三方的登录api,第三方将他们重定向到欢迎页面,登录过程完成。

如果您自己构建单点登录API,就像您可以控制网站A一样,OAuth是一个值得尊敬的选择。这很容易实现。