2

我正在尝试像Google一样进行登录,其中包括跨域身份验证。当登录到google.com时,您将自动登录像youtube.com这样的不同域名。对我来说,它看起来像:使用EasyXDM进行跨域身份验证

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

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

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

我希望有些人,如果你们有这些东西的经验。我很想知道你在想什么:) gerti

回答

1

你想要的是OAuth2(这是你指的协议 - Google的登录名是什么)。

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

基本上,他们将为您提供一个域名,当您希望他们创建帐户或登录时重定向您的用户。他们将处理所有身份验证/授权(跨域),并将您发送回具有JSON Web令牌(JWT)的经过身份验证的用户。

Stormpath有多种编程语言的一堆库,你可以在这里开始:https://docs.stormpath.com/home/

其他的解决方案一般的人去需要相当多的时间/精力来获得运行。实际上,我帮助构建了很多Stormpath库(在Node/Python中),所以我对它非常熟悉 - 在简单性方面你无法打败它。

+0

谢谢,我会看看Stormpath。但关于OAuth ..我也认为这将是一个很好的解决方案。但它似乎更像是第三方授权。当您第一次访问时,您需要确认每个域的授权。我错了吗? – gerti

+0

这是正确的 - 如果你真的想要'单点登录',你需要实现SAML - 但这通常比大多数人需要的方式复杂。通过使用token auth =)实现流畅的OAuth2流程,您可以'欺骗'用户认为他们拥有SSO – rdegges