我想创建一段可嵌入许多不同网站(小部件)的代码。
我的代码有没有办法在没有用户登录的情况下识别用户?即,我是否可以使用浮动在Web上的任何已建立的身份机制来跨此小部件的实例可靠地识别它们?
我不需要(也不应该)利用有关此用户的任何信息,只需识别它们即可。
网站将是异构的;不能保证它们会有任何共同的方面,因此小部件代码需要完全自包含。
答案 0 :(得分:6)
您想要做的是发明了什么cookie。但是浏览器在没有得到他们许可的情况下被人们跟踪是明智的,现在限制第三方cookie。
电子前沿基金会最近为uniquely identifying a visitor based on attributes of their browser提出了概念证明。它使用的东西如下:
User-Agent
字符串http-accept
值不能保证它是独一无二的,但我的浏览器肯定是,它会帮助你做出人们不喜欢的坏事。
答案 1 :(得分:3)
OpenID是整个互联网的SSO,但他们仍然需要登录OpenID。除此之外,我想不出解决方案。
答案 2 :(得分:0)
听起来您想要实现Single Sign On框架。基本上,当您第一次看到用户时,如果您不了解它们,则将它们重定向到服务器上的单一登录。 Wich对它们进行身份验证,并使用身份验证令牌将它们重定向回给您。您通过对SSO服务器的Web服务调用来验证身份验证令牌。如果它有效,那么您将该用户标记为已登录。
考虑更多,并阅读tovare的答案和你的意见。为什么不创建一些像谷歌广告一样的JavaScript代码?您将javascript放在页面上,并使用动态iframe向您的中央跟踪服务器发出请求。
让您的跟踪服务器返回一个图像标记,其中嵌入了唯一ID(自己的会话ID)的src。
<img src=contentserver.com/track.php?id=12345668>
内容服务器具有服务器端脚本(上面的track.php),该脚本将其本地会话ID映射到从跟踪服务器接收的唯一ID。
所有网站的唯一ID保持不变。
使用javascript技巧,而不是使用图像。内容服务器只是从跟踪服务器请求javascript文件。但该文件是在服务器端生成的动态文件。它返回一个名为unique_id()
的生成的javascript函数,它从跟踪服务器返回唯一的id。使用ajax调用track.php以确定这是否是唯一用户。
答案 3 :(得分:0)
我建议使用Open-ID而不是像这样的解决方法,但是如果你不喜欢这个解决方案,你可能会考虑这样的事情:
您可以使用来自单个域的Cookie,然后使用该域重定向到正确的网站,将user-id添加为参数或URL路径的一部分
例如,在foo.com -site上添加个人小部件的链接可能类似于:
http://bar.com/addwidget1?backtoo=http://foo.com/main/
bar.com将拥有cookie,更改用户首选项,然后在重定向之前将用户ID添加到反向链接:
foo.com/user-id/
此方法的问题包括
好处
答案 4 :(得分:0)
将OpenID或简化版本与您自己的网站一起用作身份提供者。将用户重定向到设置或检查cookie的标识符站点,然后将用户的身份重定向回来,该身份由cookie指示,作为URL参数添加。
您的标识符站点可以是OpenID身份提供商,不需要任何用户交互即可进行身份验证。接收此身份的站点可能不是OpenID消费者,因为他们不向用户提供选择的提供者。如果您的cookie和标识符已签名,您可以取消OpenID所需的一些签名。
Facebook提供类似的东西;网站可以找到用户的Facebook身份(假设用户有一个),而不对用户进行任何操作。