如何实现无状态 REST API
我正在开发一个 REST API,供编写移动应用程序的开发人员使用。用户将能够使用第三方服务(Google、Twitter 等)来验证自己的身份,这主要由 OAuth 处理(取决于相关服务)。我们在客户端应用程序和 API 服务器之间使用 2 足 OAuth(其中消费者密钥/秘密是应用程序特定的,开发人员在应用程序注册时从我们的网站获取它)。
我的问题是如何以无状态方式跟踪用户身份验证。我没有在每个请求中发送的用户凭据。我可以在用户登录时创建一个唯一的 session_id,然后在对 REST API 的每个请求中都需要该 ID。我的问题还有其他解决方案吗?从无状态 REST API 的角度来看,使用唯一的 session_id 来识别用户是否会导致任何问题?
I am working on a REST API that will be used by developers writing mobile apps. Users will be able to use 3rd party services (Google, Twitter etc) to authenticate themselves, this is mainly handled by OAuth (depending on the service in question). We use 2-legged OAuth between the client application and the API Server (where the consumer key/secret is app specific, the developer gets it from our site when the app is registered there).
My problem is how to handle to keep track of the user authentication in a stateless manner. I do not have the users credentials to send in each request. I could create a unique session_id when a user logs in and then require that in each request to the REST API. Are there any other solutions to my problem? Does using a unique session_id to identify the user cause any problems from a stateless REST API perspective?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
免责声明:无论如何,我不是安全专家。
不要将其称为 session_Id。将其称为身份验证令牌,并使用您自己的身份验证方案向其传递 Authorization HTTP 标头。有关示例,请参阅 Google AuthSub。
除了识别用户并确定他们是否有权执行请求之外,请勿将此身份验证令牌用于任何其他用途。不要将任何状态与令牌关联,也不要根据它检索用户首选项。
Disclaimer: I am not in anyway a security expert.
Don't call it a session_Id. Call it an authentication token and pass it the Authorization HTTP header using your own authentication scheme. See the Google AuthSub for an example.
Do not use this authentication token for anything other than identifying the user and determining if they are authorized to perform the request. Do not associate any state to the token and do not retrieve user preferences based on it.