2

我正在尝试像 Google 一样进行登录,其中包括跨域身份验证。登录 google.com 时,您会自动登录不同的域,例如 youtube.com。对我来说,它看起来像:

  • 您在 accounts.google.com 上输入凭据
  • Google 通过 AJAX 发送请求以检查它们
  • 如果它们是正确的,它 1. 设置一个 cookie 和 2. 向 youtube 等其他域发出请求并发送一些标识符(SID 或令牌?)并为这些域设置 cookie
  • 毕竟所有其他域也有 cookie 谷歌将你重定向回你来自的地方

我进行了很多研究,似乎easyXDM(http://easyxdm.net/wp/)是一个很好的解决方案(你认为是吗?)。但我不确定如何进行跨域身份验证。当用户正确登录时,我是否应该只向其他域发出请求并传递 SID 并在域上创建 cookie?还是不安全?或者我应该在登录后为用户创建一个令牌并将其存储在我的数据库中。然后将令牌发送到所有域以对他进行身份验证,然后删除令牌?

我发现的其他一些东西是通过 iframe 中的 iframe 提供的解决方案。谷歌的 analytics.js(https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain)看起来令人兴奋......但我看到了它甚至集成在 easyXDM 中。

如果你们有这方面的经验,我希望有些人。我很想知道你的想法:) gerti

4

1 回答 1

1

您想要的是 OAuth2(这是您所指的协议——Google 登录的功能)。

如果您正在寻找一个简单的解决方案,您可能想尝试使用Stormpath + IDsite 之类的东西。这是一项免费的 API 服务,您可以注册/使用。

基本上,他们会为您托管一个域,当您希望他们创建帐户或登录时,您可以在其中重定向用户。然后,他们将处理所有身份验证/授权(跨域),并将经过身份验证的用户发回给您JSON 网络令牌 (JWT)。

Stormpath 有一堆适用于各种编程语言的库,您可以从这里开始:https ://docs.stormpath.com/home/

人们通常使用的其他解决方案需要相当多的时间/精力才能运行。实际上,我已经帮助构建了很多 Stormpath 库(在 Node / Python 中),所以我对它非常熟悉——就简单性而言,你真的无法击败它。

于 2015-06-13T08:26:39.070 回答