4

问题

假设我有 example.com、example.org 和 example.net。

所有这些站点都有一个登录名,该登录名根据相同的用户凭据库进行身份验证。

我正在寻找一种有效的方式来只登录一个地方,但仍然能够在网站上透明地登录。

我当前的解决方案
......在其中一个站点(我称之为主站点)上加载资源的 iframe,如果用户在主站点登录,则使用令牌刷新页面并通过自动登录用户一些JavaScript。

但这实际上是低效和不安全的,原因如下:

  • 用户需要在主站点登录
  • 用户需要使用一些客户端代码刷新他的页面(我知道可能无法避免这种情况)。
  • 使用 iframe 通常不受欢迎,有些甚至有浏览器插件阻止这些。

想要
什么我 对使用 Facebook、Google 或 OpenID 提供商等第三方提供商不感兴趣,因为这需要我的用户在第三方网站上注册才能使用我的服务。

总结具体问题
就像谷歌甚至 StackOverflow 一样,站点之间的身份验证过程似乎是透明的,我需要类似的东西。我目前的解决方案有什么更好的选择?

4

1 回答 1

4

我无法共享代码......但我实施的解决方案涉及一个中间人来处理我所有网站的身份验证......我们称之为 SSO 代理......

基本上,所有登录请求都通过 SSO 代理,它会在尝试访问 siteb 时确定您是否已经在 sitea 中登录。

...我可以为您指出我们如何实现它的壁橱是: http ://www.jasny.net/articles/simple-single-sign-on-for-php/

其他 sso 解决方案也都有自己的位置,但有些比要求的更复杂。

另一种简单的方法是,简单地在彼此之间传递一些(安全的)令牌。

于 2012-06-18T09:56:21.237 回答