我的Web应用程序可以实现用户登录并保持无状态吗?

bmb*_*bmb 8 authentication cookies session login web-applications

我们有一个无状态的Web应用程序.我们使用SSL/TLS上的http身份验证.用户的浏览器可能存储了身份验证凭据(如果他们以这种方式配置浏览器,可能甚至在浏览器关闭后也是如此.)我们会在每次访问时验证它们.

由于主要与可用性有关的原因,我们希望停止使用http身份验证.是否有合理的方式来实现用户登录和

  • 保持无国籍.
  • 不要求用户在每次访问时重新键入凭据.
  • 至少与SSL/TLS上的http身份验证一样安全.

例如,我们愿意使用cookie,并可以将用户名和密码存储为cookie.但是,这似乎不太安全.但是吗?如果我们使用非持久性cookie,它是否比浏览器在会话期间用于存储凭据的方法或更长时间的安全性更低?

我们可以存储用户名和密码的哈希,如下所示:我应该在cookie中存储什么以在用户登录期间实现"记住我"但是更好吗?

我们可以将随机令牌存储为cookie,但是我们必须在服务器上保留一个查找表(会话)并变为有状态.

我们可以将凭据的加密版本存储为cookie,然后在每次访问时进行解密和验证.这 似乎比http身份验证稍微安全一点,也不需要状态.但是,我不确定我们是否需要额外的解密开销.它真的更安全吗?如果有人获得了加密(或散列,如上所述)字符串的副本,那么它们是否具有与拥有密码相同的访问权限?

我很感激你的想法,但让我们开始假设SSL/TLS上的http身份验证足够安全 ,我们希望保持无状态.

编辑

经过一些更多的研究,我认为这个stackoverflow问题:客户端会话更好地说明问题,答案也相应更好.感谢大家的投入.

Zan*_*ynx -2

我不认为随机令牌比用户名和密码或多或少是无状态的。

两者都需要在某种形式的数据库中查找。您的应用程序已经有了状态。已认证或未认证的状态。

发送的用户名和密码与随机令牌完全相同。

所以我对你的问题的回答是“否”。Web 应用程序无法实现任何形式的用户身份验证并保持无状态。