【问题标题】:What's the best (and most secure) way to store token values in client side?在客户端存储令牌值的最佳(也是最安全)的方法是什么?
【发布时间】:2019-10-21 07:45:43
【问题描述】:

我从授权服务器获取令牌,只有在令牌过期时才应调用该令牌。所以我必须将该令牌存储在客户端的某个地方。问题是,我没有数据库可以放入,我不知道使用系统文件是否是个好主意。我需要您的帮助来告诉我存储此令牌的最佳方式是什么?

【问题讨论】:

  • 您打算在整个应用程序中使用该令牌吗?还是根据特定用户请求令牌?
  • 根据您的问题,您从像 Oauth 这样的授权服务器获得了令牌,而您想要做的是使用从服务器获得的令牌并将其用于您的应用程序客户端?如果我的猜测是正确的。使用 cookie 将令牌存储到客户端的最佳方式。这是来自 Oauth 的链接,它将向您解释存储令牌的位置。 auth0.com/docs/security/store-tokens
  • 令牌用于整个应用程序(每次处理一个令牌)。事实上,我不能将它存储在会话中,因为令牌的生存时间是 90 天:/ 我需要将它一直保存在某个地方(无论我是否重新启动我的应用程序,重新发送它......)所以 cookie 和缓存我猜这不是一个好选择..
  • 为什么必须在客户端完成?
  • 令牌存储在浏览器(客户端)中。因此,每次用户(使用浏览器)向您的应用程序请求时,浏览器不会提供用户名和密码,而是使用令牌将其发送到您的应用程序,您的应用程序将使用算法验证令牌。所以基本上每次他们向您的 API 端点请求时都会使用令牌。它类似于,用户登录到您的应用程序(api/login),然后服务器将验证用户名和密码,然后如果经过验证的服务器将返回包含(如果用户可以访问某个端点)的令牌,然后是您的客户端或浏览器保存

标签: java oauth-2.0 token


【解决方案1】:

您可以使用 cookie 在浏览器中保存身份验证信息。 许多现代网站使用 cookie 来存储令牌。 如果您使用 cookie,浏览器将自动将身份验证信息与每个请求一起发送到 API。只要您知道它正在发生,这就会很方便。

【讨论】:

  • 我明白了...但是我怎样才能将令牌存储 90 天(我必须)?这样每次我重新启动我的应用程序或交付新版本时,我仍然可以使用相同的令牌..
  • 您可以设置 cookie 的最长期限为 90 天。
猜你喜欢
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2021-11-28
  • 2021-09-20
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2021-05-06
相关资源
最近更新 更多