如何保存刷新令牌

Bil*_*Yan 27 oauth oauth-2.0

我正在尝试为我的应用程序添加身份验证功能.身份验证服务器实现oauth 2.0

我不知道如何保存refresh_token.我想将它保存到文件中,因此下次当应用程序启动并且有一个refresh_token可用时,它可以请求新的access_token.用户无需再次重新登录.

但这对我来说听起来并不安全,因为如果有人将我的具有refresh_token的文件复制到另一台计算机,他可以入侵我的帐户.

小智 13

您对所描述的攻击是正确的.必须安全地存储刷新令牌才能按预期使用.据我了解,您正在构建一个独立的应用程序.因此,您可以依赖文件系统安全性来防止未经授权的用户复制刷新令牌.您可能也希望对刷新令牌使用加密,但是密钥需要绑定到本地计算机上的用户会话(否则,用户需要在"登录"过程中提供它以便应用程序解密刷新令牌).

考虑从OAuth工作组中读取线程,该线程讨论与所描述类似的问题,并提供一些指导:https: //www.ietf.org/mail-archive/web/oauth/current/msg02292.html

  • 请点击此处https://developers.google.com/api-client-library/python/guide/aaa_oauth查看包含以下代码行的部分:`from oauth2client.file import Storage`.当我使用该代码创建存储时,它只是创建了一个包含所有信息的普通JSON文件.这个类"oauth2client.file.Storage"的一个优点是它应该是线程安全的.但是,这里没有使用加密,所以我很伤心.Google建议尽可能使用他们的库,以避免"搞砸".但是,Storage类没有做太多.思考? (2认同)

Sud*_*ari 7

刷新令牌用于获取访问权限(此过程需要HTTP Basic Auth)。因此,除非用户拥有您的(id,secret)组合,否则他将无能为力。但是,必须非常认真地考虑刷新令牌的存储。

这是我的两分钱:

  1. 将令牌存储在数据库中

  2. 每当您使用刷新令牌获取访问令牌时,也请重置刷新令牌。(Oauth2.0具有此功能,您也可以使刷新令牌不变,但是从安全角度考虑,使它保持更改和更新数据库是明智的)

希望这能提供一些见识!

  • 重置刷新令牌不需要重新身份验证。 (2认同)