我正在编写一个rails web服务,我想使用authlogic进行身份验证,因为这似乎是最常用和最活跃的身份验证宝石之一。我们的客户应该能够使用他们的用户凭据进行身份验证,所以我决定将http基本身份验证(authenticate_or_request_with_http_basic)与ssl一起使用。
我想通过用密码、url和请求时间的哈希值替换原始身份验证密码来增加一些安全性,以确保请求只能在短时间窗口内使用。由于Web服务和客户端时间不同步,我必须发送除了登录凭据之外的客户端时间。如何将客户端日期添加到身份验证标头中,并使用authenticate_or_request_with_http_basic方法读取它?
为什么需要向客户端发送时间详细信息?您可以存储身份验证服务器端的TTL,并根据该TTL验证所有未来的请求。
成功的身份验证可能会向客户端发送一条消息,说明他们有xxx分钟/天(TTL)的时间来做他们需要做的事情。当TTL过期时,您的web服务应该向客户端返回一个中立的响应(与身份验证尝试失败时相同,以保护自己免受黑客攻击)。
最好不要乱搞客户日期信息。如果他们机器上的日期错了怎么办?
更新:我仍然担心整个客户约会的事情。看看其他人是如何用rails实现API的