我正在开发一个 REST API,编写移动应用程序的开发人员将使用它。用户将能够使用 3rd 方服务(Google、Twitter 等)来验证自己,这主要由 OAuth 处理(取决于相关服务)。我们在客户端应用程序和 API 服务器之间使用 2-legged OAuth(其中消费者 key / secret 是特定于应用程序的,当应用程序在那里注册时,开发人员从我们的站点获取它)。
我的问题是如何处理以无状态方式跟踪用户身份验证。我没有在每个请求中发送的用户凭据。我可以在用户登录时创建一个唯一的 session_id,然后在对 REST API 的每个请求中要求它。我的问题还有其他解决方案吗?从无状态 REST API 的角度来看,使用唯一的 session_id 来识别用户是否会导致任何问题?
最佳答案
免责声明:我无论如何都不是安全专家。
不要将其称为 session_Id。将其称为身份验证 token 并使用您自己的身份验证方案将 Authorization HTTP header 传递给它。见 Google AuthSub举个例子。
除了识别用户和确定他们是否有权执行请求之外,不要将此身份验证 token 用于任何其他目的。不要将任何状态与 token 相关联,也不要基于它检索用户首选项。
关于api - 如何实现无状态 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864761/