我被要求在没有用户名和密码的情况下执行身份验证,我的选择是什么?


I've been asked to perform authentication without usernames and passwords, what are my options?

我被要求把密码和用户名放在一边,因为大多数网站访问者都是"停-买-回-几个月后"的访问者,他们的动机是"他们无论如何都会忘记密码,不得不请求新的密码"。

我怀疑对我来说没有现实的方法来做到这一点,因为IP地址可能会改变,浏览器会更新,cookie会被清除等等。

或者我有其他选择吗?

(不是说我在寻找代码,而是概念和伪,但在项目中的语言是php/js加上apache服务器)

使用OpenID

让Facebook, Google, Wordpress,甚至Stack Exchange为你处理身份验证,人们不必记住另一个密码。


另外:

很多用户都明白"忘记我的密码;查看我的电子邮件"所以为什么不让他们输入他们的电子邮件,然后给他们发送一个登录url和一个随机生成的令牌来登录呢?

一旦他们登录了,保持他们登录,只要你认为安全。

我们在电子商务解决方案中做了以下工作:

我们使用电子邮件作为唯一标识符。

当客户使用相同的电子邮件进行购买时,该订单将附加给其现有用户。但是你不会得到任何地址细节之类的东西,你必须手动输入。

如果是第一次购买,客户将收到一封带有生成密码的电子邮件。如果是第二次购买,他们只会被指示登录。但是,这可以与url和登录令牌结合使用。同样,对于登录到站点,您可以让他们输入一个电子邮件来接收登录url令牌。

将其与长期存在的cookie和/或浏览器数据存储相结合,以记住客户的详细信息(地址等)。

另一个选择是让他们输入一些关于他们自己的东西,他们总是知道,但其他人不会。然而,很难找到一个国际上可行的解决方案。

您可以使用所谓的超级cookie,这是客户端的离线存储。无论是通过html5离线存储,或插件,如flash,以恢复删除的cookies。虽然,这些cookie可能会在某个时候被禁止,因为它们对用户来说大多是隐藏的,很难摆脱。(不推荐这种方法,只是说这是可能的)

认证凭证分为三个选项;

  • 你知道的东西-密码
  • 你拥有的东西-物理钥匙,卡片
  • 你是什么-虹膜,视网膜和其他生物识别

我认为你能做的最好的就是使用饼干。还是……我猜你可以让他们下载一个文件,并上传该文件作为他们的访问凭证——与cookie的想法相同,但不太可能被删除。但是,您必须仔细考虑在文件中放入什么内容-他们的用户id还不够,因为它很容易被黑客攻击。一个随机的长字符串就可以了,这个字符串保存在他们账户的数据库中。没有什么可以预测的,也没有什么可以用来猜测不同帐户的凭据。

我想到了几个选项:

  • 使用持久cookie,但只有与SSL结合使用(因此无法从网络上嗅出)

  • 另一个选项是OpenID,就像你在这里使用-因此访问者可以使用他们经常使用的帐户登录到您的网站。

在我看来,你唯一的选择就是给他们一个永久的cookie,并希望它不会在访问之间被清除。