30

I'm trying to add authentication feature to my application. The authentication server implements oauth 2.0

I'm not sure how to save the refresh_token. I want to save it to a file, so next time when the application starts and there is a refresh_token available, it can ask for a new access_token. The user won't need to re-login again.

But this doesn't sound secure to me, because if someone copies my file that has the refresh_token to another computer, he can hack into my account.

4

3 回答 3

14

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

考虑阅读 OAuth WG 的主题,该主题讨论了与所述问题类似的问题并提供了一些指导: https ://www.ietf.org/mail-archive/web/oauth/current/msg02292.html

于 2013-01-04T22:36:01.020 回答
11

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

这是我的两分钱:

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

  2. 每当您使用刷新令牌获取访问令牌时,也会重置刷新令牌。(Oauth2.0 有这个特性,你也可以让刷新令牌不变,但是从安全角度来看,保持它的变化和更新数据库是明智的)

希望这能提供一些见解!

于 2017-05-24T05:28:39.847 回答
-5

您的担忧是对的 - 您不应该保存刷新令牌。这样做会危及客户的数据(并且您知道原因;您在问题中写了它)。oAuth 不应该以这种方式工作。您应该将刷新令牌保留在内存中。

于 2013-01-04T22:36:27.120 回答