我想通过AJAX将基本身份验证用于REST服务。身份验证标头不是我的问题。我的问题是如何存储和检索将在基本身份验证中使用的凭据。
我是否应该在首次登录时将用户名和密码存储在Cookie中?我希望用户能够登录该网站。一旦他们登录,他们的Web浏览器将通过AJAX下载页面内容,并使用包含其数据的REST服务进行基本身份验证。
我认为必须有一些标准的方法来做到这一点。但我很难弄清楚它是什么。
谢谢!
答案 0 :(得分:2)
在我弄清楚究竟是在问什么之后,我把这个问题标记为一个骗局。
以下是关于你如何推出自己的Auth系统的答案,这最初是我认为你的问题所在:)
如果您的网站在互联网上可见,则仅使用HTTP Basic Auth不会保护您的内容。
您不应将用户名和密码存储在数据库内的任何位置。密码绝不应以纯文本格式存储。它应为hashed,使用a Salt。
进行身份验证时,使用相同的Salt散列密码,并验证生成的哈希值是否相同。
您还可以考虑密码的预哈希(除了服务器端哈希),因此纯文本密码永远不会通过网络发送。
仅使用用户名和密码进行一次身份验证,并将会话cookie返回给用户。
此cookie应用于查找哪个用户拥有会话,以及何时进行身份验证(因此会话可能会过期)。如果他们有一个符合未到期会话的有效cookie,您可以考虑对他们进行身份验证。
此计划的其余问题是它仍然倾向于a replay attack或a man-in-the-middle attack。
您可以通过仅允许经过身份验证的会话通过SSL访问您的网站来缓解部分问题。
可以帮助的另一件事(虽然不能完全解决问题)是在会话数据中存储auth请求来自的IP,并确保每个请求都是相同的IP。 / p>
如果可以,我建议您重复使用现有的身份验证系统,而不是自己动手。这有点复杂(并且容易出问题),其他人已经仔细考虑过了。我确信我也缺少一些细节。