我一直在为我公司的网站制作标准化的JSON API;我希望有一种方法可以验证用户使用API,同时保持API尽可能无状态。我的想法如下:
用户登录后,Web服务对用户进行身份验证,并生成传递给客户端的随机字符串以及到期日期。它存储在cookie中,也存储在数据库中。
对于每个API请求,Web服务都会根据数据库条目检查cookie字符串。如果它进行身份验证,Web服务将生成一个新字符串,将旧字符串替换为数据库中的新字符串和cookie,然后发回所请求的信息。
如果客户端发送请求且cookie与数据库条目不匹配,则数据库中的字符串将设置为NULL,客户端必须再次登录并从步骤1开始此过程。
如果在到期日期之后发送请求,则数据库中的字符串将设置为NULL,并且用户必须再次登录。
我希望尽可能减少我公司目前的设置中断,因为我们正在慢慢过渡到更新的技术。这种方法通常是做什么的吗?如果我这样做,我会遇到什么样的安全问题?我应该使用不同的方法吗?
答案 0 :(得分:0)
是的,这是一种常见的情况。您所描述的是会话cookie并被广泛使用。
您可能希望阅读Session Fixation技术以及减轻这些技巧的方法。
但使用会话并非真正无状态。如果您可以向API使用者提供密钥(共享密钥),您还可以考虑使用邮件签名来验证请求。确保您使用的是(H)MAC。另外,请确保您自己Replay Attacks。{/ p>