【问题标题】:OAuth2 Refresh Token. How to store it on client-sideOAuth2 刷新令牌。如何将其存储在客户端
【发布时间】:2016-06-01 03:06:08
【问题描述】:

Authorization OAuth2 Server来获取access+refresh token。 据我了解,访问令牌可以存储在客户端,因为它的生命周期很短。但是刷新令牌可以存储在那里吗?根据我阅读的信息,没有安全的方法可以做到这一点(here)

所以,我必须实现单独的服务器端服务,只是为了存储刷新令牌

我说的对吗? 存储刷新令牌是否只有一种可能的方式?

附:客户端:angularJS

【问题讨论】:

  • 如果您只有一个页面,您可以将其存储在内存中,如果您有多个页面,请使用 localStorage。只需确保您的服务器只接受来自受信任域或受信任的client_Id 的请求。
  • @A1rPun localStorage 是否完全安全?实际上 client_id 是 public information
  • LINK:注册您的应用后,您将收到一个客户端 ID 和一个客户端密码。客户端 ID 被视为公共信息,用于构建登录 URL,或包含在页面上的 Javascript 源代码中。客户机密必须保密。如果已部署的应用程序(例如 Javascript 或本机应用程序)无法对密钥保密,则不使用该密钥。
  • 我最近偶然发现了这篇文章:bitoftech.net/2014/07/16/…

标签: javascript oauth oauth-2.0 token access-token


【解决方案1】:

是的,你是对的。如果您无法通过授权服务器进行身份验证(即传递客户端 ID 和密码),那么您将只能获得一个短暂的访问令牌。

由于 Angular 代码在客户端上,因此保存您的客户端机密是不安全的。因此,您无法将客户端密码传递给 Auth 服务器,因此您无法进行身份验证。

此外,您的服务器代码不仅会存储令牌,还需要托管一个接受身份验证代码的端点,然后使用该代码(以及您的客户端凭据)调用身份验证服务器以获取令牌并刷新令牌.

在成功的用户登录和用户授予对您应用程序的访问权限后,身份验证代码将通过来自身份验证服务器的调用通过 http 重定向提供给您的服务器端点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 2019-12-30
    • 2019-03-03
    • 2015-04-25
    • 2018-04-24
    • 2016-05-31
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多