我正在构建一个非常典型的网络应用产品。未来它可能会有相应的移动应用程序。我正在使用 REST API 从头开始构建它,该 API 使用 OAuth2 进行保护。我已经让 OAuth2 正常工作,并且能够使用各种授权类型成功连接。
我有点困惑的是用于实际网络应用程序的授权类型。这是我的想法:
公共 API 访问
在用户登录 Web 应用程序之前,用户注册和密码重置等操作需要一些 API 访问权限。我正在考虑使用client_credientials
授权类型。一个简单的客户端 ID 和秘密验证,以换取访问令牌。
但是,似乎完全没有必要为每个公共请求甚至每个会话请求访问令牌。只生成一个我的网络应用程序将始终使用的访问令牌似乎更有意义。
然而,这似乎与 OAuth 的工作原理背道而驰。例如,访问令牌过期。这样做的正确方法是什么?
私有用户 API 访问
接下来,为了让用户登录到我计划使用password
授权类型(资源所有者密码凭据)的网络应用程序。这种方法允许我user_id
使用访问令牌保存 - 所以我知道哪个用户登录了。此外,通过使用范围,我可以限制 API 内的访问。
我计划将访问令牌保存在 PHP 会话中。只要 PHP 会话处于活动状态,它们就会保持登录到 Web 应用程序。
这是适合用户登录的设计吗?