【问题标题】:Where do I store the OAuth refresh token in a browser based application在基于浏览器的应用程序中,我在哪里存储 OAuth 刷新令牌
【发布时间】:2017-01-06 09:01:07
【问题描述】:

我将访问令牌和刷新令牌都存储在本地存储中。这是正确的吗?

详细信息:我有一个 Angular 2 应用程序。用户加载我的应用程序,然后使用我的 api 进行身份验证(用户名、密码)。为它们提供了访问令牌和刷新令牌。客户端使用访问令牌直到过期(15 分钟),然后在遇到 401 错误后,使用刷新令牌(有效期为 6 个月)更新访问令牌。

我的设置与此类似: http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/

我已经看到类似的问题和建议在服务器上存储刷新令牌,但我不确定在我的情况下我会如何做到这一点(据我所知,客户端需要保留它本地刷新令牌):where to store - access token and refresh token in OAuth 2.0

【问题讨论】:

    标签: angularjs security oauth local-storage


    【解决方案1】:

    最好保护刷新和访问令牌免受恶意访问。这可以来自 XSS 脚本、浏览器插件等。

    对于传统的 Web 应用程序和浏览器 cookie,使用 HttpOnlySecure 标志可以提供一些保护。 HttpOnly 标志告诉浏览器不允许 JS 访问(仅将 cookie 与请求一起发送到主机)。 Secure 标志告诉浏览器仅在传输安全 (TLS) 的情况下发送 cookie。

    刷新令牌应被视为密码或密钥,因为它可用于请求新的访问令牌。 6个月的寿命是一个很大的暴露窗口。我会使用更短的时间跨度并使到期时间滑动。例如,几天或几周,并且每隔一段时间刷新两个令牌。

    很遗憾,我还不知道如何保护本地存储。我希望我能在这方面提供更多帮助。 :-(

    【讨论】:

      猜你喜欢
      • 2017-03-11
      • 2020-11-05
      • 1970-01-01
      • 2012-01-28
      • 2018-07-19
      • 2019-12-30
      • 2019-11-02
      • 2017-05-11
      相关资源
      最近更新 更多