0

我正在创建一个小应用程序,用户必须在其中使用 Facebook 进行身份验证(我正在使用 OAuth2)。此时,所有此过程看起来像这样:

  • 用户将点击“FB登录”按钮。
  • 用户将被要求登录 Facebook 并获得许可。如果用户允许,它将返回一个授权码。
  • 现在我们将使用授权码来获取访问令牌。
  • 我们可以将访问令牌存储在会话中以启动用户会话。
  • 现在我们可以使用访问令牌来访问不同的用户资源。

access_token在这里我有一个问题 - 存储以备后用是最好的(即最安全的方式)吗?将它简单地“隐藏”到数据库中并在需要时将其取出,或者它是否可以开发一些原始的哈希算法来保护它?

4

1 回答 1

4

访问令牌的生命周期很短 - 如果您有一个服务器端会话,则更容易将访问令牌保留在那里(而不是在数据库中),以便所有请求都可以使用它。重复使用单个访问令牌比使用刷新令牌为每个请求获取一个新令牌更好。一个原因是性能。获取新的访问令牌可能会撤销由同一刷新令牌创建的旧访问令牌,但这取决于您的 OAuth2 服务器实现。

后端会话应该足够安全,只要您的服务器不将其会话数据保存在任何人都可以读取的位置(一些临时磁盘存储)。

在会话中保留访问令牌时,您可能必须找到一种方法来刷新它们 - 您应该防止多个请求(线程)刷新单个访问令牌。

于 2019-05-29T13:10:34.850 回答