Authentication 识别未登录的网站用户?

Authentication 识别未登录的网站用户?,authentication,web-applications,openid,identity,Authentication,Web Applications,Openid,Identity,我想创建一段代码,可以嵌入到许多不同的网站(widget) 我的代码是否有任何方法可以在用户不登录的情况下识别用户?也就是说,我是否可以使用任何在web上浮动的已建立的身份机制来可靠地跨此小部件的实例识别它们 我不需要(也不应该)访问有关该用户的任何信息,只需识别它们 网站将是异构的;无法保证它们有任何共同的方面,因此小部件代码需要完全独立。OpenID是整个互联网的SSO,但它们仍然必须登录到OpenID。除此之外,我想不出一个解决方案。听起来你想实现一个单点登录框架。基本上,当您第一次看到用

我想创建一段代码,可以嵌入到许多不同的网站(widget)

我的代码是否有任何方法可以在用户不登录的情况下识别用户?也就是说,我是否可以使用任何在web上浮动的已建立的身份机制来可靠地跨此小部件的实例识别它们

我不需要(也不应该)访问有关该用户的任何信息,只需识别它们


网站将是异构的;无法保证它们有任何共同的方面,因此小部件代码需要完全独立。

OpenID是整个互联网的SSO,但它们仍然必须登录到OpenID。除此之外,我想不出一个解决方案。

听起来你想实现一个单点登录框架。基本上,当您第一次看到用户时,如果您不认识他们,您可以将他们重定向到单点登录服务器。Wich对它们进行身份验证,并使用身份验证令牌将它们重定向回您。您可以通过对SSO服务器的web服务调用来验证身份验证令牌。如果有效,则将该用户标记为已登录

编辑 所以多想想,看看托瓦雷的答案和你的评论。为什么不创建一些类似谷歌广告的javascript代码呢?您将javascript放在页面上,它使用动态iframe向中央跟踪服务器发出请求

让跟踪服务器返回一个嵌入了唯一id(自己的会话id)的src的图像标记。

content server有一个服务器端脚本(上面的track.php),该脚本将其本地会话id映射到从跟踪服务器接收的唯一id

唯一id在所有站点上保持不变

编辑2
不要使用图像,而是使用javascript技巧。content server只是从跟踪服务器请求一个javascript文件。但该文件是在服务器端生成的动态文件。它返回一个生成的javascript函数,名为
unique\u id()
,它从跟踪服务器返回唯一的id。使用ajax调用track.php以确定这是否是一个唯一的用户。

您想要做的是发明cookie的目的。但是浏览器对未经允许被跟踪的人已经变得明智,现在限制第三方cookie

电子前沿基金会最近提出了一个概念证明。它的用途如下:

  • 用户代理
    字符串
  • http接受
  • 时区
  • 屏幕分辨率和颜色深度
  • 已安装的插件
  • 如果启用了Cookie

它不保证是唯一的,但我的浏览器确实是这样的,它会让你走上人们不喜欢的坏事的路。

< P>我建议开放ID而不是像这样的一些解决方法,但是如果你不喜欢这个解决方案,你可能会考虑这样的事情:

您可以使用来自单个域的cookie,然后使用该域重定向到正确的站点,添加用户id作为参数或URL路径的一部分

例如,在foo.com网站上添加个人小部件的链接可能类似于:

http://bar.com/addwidget1?backtoo=http://foo.com/main/
bar.com将拥有cookie,更改用户首选项,然后在重新定向之前将用户id添加到反向链接:

foo.com/user-id/
这种方法的问题包括

  • 您需要使用user-id动态地重写每个页面
  • 我觉得有点笨拙
  • 您无法充分利用网络中的web缓存
  • 用户可能会丢失cookie
利益

  • 没有登录
  • 因为你重定向了很多,所以你可以得到你网站上用户移动的统计数据

使用OpenID或简化的变体,将您自己的站点作为身份提供者。将用户重定向到设置或检查cookie的标识符站点,然后使用cookie指示的用户标识(作为URL参数添加)将用户重定向回

您的标识符站点可以是一个OpenID身份提供程序,它不需要任何用户交互来进行身份验证。接收此标识的站点可能不是OpenID消费者,因为它们不向用户提供提供商的选择。如果对cookie和标识符进行了签名,您可能可以取消OpenID所需的一些签名


Facebook提供了类似的功能;网站可以在用户不采取任何行动的情况下找到用户的Facebook身份(假设用户有身份)。

我可能最终不得不这样做,但我特别感兴趣的是,我是否可以避免让他们注册。也许在现有系统上搭便车(谷歌?Facebook?)没有一个没有可怕安全缺陷的现有系统会允许你这么做。如果你找到了一种方法,你应该期望一旦他们发现你使用的方法就会被淘汰。@Laizer Wooble是对的。任何可以让你这么做的现有网站都被严重破坏了。你想让任何一个随机站点知道你的谷歌id吗?我可能在这里吹毛求疵,但我不关心获取实际的id,也不关心关于这个人的任何事情——只是可靠和唯一地识别他们。是的,但你不能跨域访问cookies。@Byron:这就是我所说的“浏览器……现在限制第三方cookies”在我的公司,所有15000名员工都使用同一个浏览器,没有自定义功能,每个人都通过完全相同的代理访问互联网。@tovare:还是检查一下吧。我的iPodtouch是独一无二的,没有什么特别独特的。试试两台电脑,看看它是否说浏览器是独一无二的。这个问题的关键是用户体验——必须登录很烦人。不过,这里显然存在道德问题。很可能任何一种没有明确同意的身份追踪都会进入灰色(深灰色?)区域。我想下一个问题是:你在做什么