当前位置: 首页 > 知识库问答 >
问题:

为什么Firebase Auth同时具有刷新令牌和ID令牌?

梁渊
2023-03-14

本文件规定:

Firebase ID令牌是短暂的,只能持续一个小时;刷新令牌可用于检索新的ID令牌。

我是否可以说,刷新令牌本质上同时充当客户端设备的密码和标识,并且拥有刷新令牌意味着能够检索ID令牌,从而能够作为与该刷新令牌关联的用户进行身份验证?

如果是这样,那么拥有这两个不同的令牌的目的是什么?

谢谢

共有1个答案

双志强
2023-03-14

ID令牌是一个JWT,它证明用户已经过身份验证,但不包含足够的信息来对用户进行身份验证。它是一个不记名令牌,具有内置的过期时间(在Firebase中,过期时间是创建后的一个小时)。它可以很容易地被解码(例如在jwt.io上),使得它们很容易使用。所有这些都使得传递这种令牌类型作为身份验证的证据,并在客户端应用程序中使用它更加安全。

刷新令牌是一个长期存在的OAuth2令牌,在某种程度上是用户凭据的代理。它可用于生成ID令牌,但接收者本身无法解码。它应该只在服务器上使用,以确定用户的授权。

另请参阅:

  • Auth0 中的 id_token 和 access_token 有什么区别
  • 揭秘火碱身份验证令牌
  • ID 令牌和访问令牌:有什么区别?
  • 访问令牌与
  • ID令牌与刷新令牌 - 什么?为什么?什么时候?
 类似资料:
  • 刷新令牌有什么用处?按照我的理解,当访问令牌过期时使用刷新令牌,发送刷新令牌生成另一个刷新令牌和另一个访问令牌。这是因为如果访问令牌由于其持续时间短而被劫持,恶意用户实际上什么都不能做,但如果具有较长持续时间的刷新令牌被劫持,则用户将无法再受到保护。那么刷新令牌应该存储在哪里,这样才不会被人劫持呢?或者在后端应该采取哪些安全措施?

  • 我已经阅读了JWT和访问令牌和刷新令牌。我知道您必须在很短的时间(分钟)内设置访问令牌过期,并在过期时使用刷新令牌获取新的访问令牌。 我不清楚三件事: 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码? 谁检查刷新令牌是否过期?(显然刷新令牌也需要过期,尽管需要更长的时间才能过期)。 在我看来,如果刷新令牌过期,则必须提示用户重新登录。在某些情况下(移动应用)

  • 我正在构建一个使用JWT进行身份验证的应用程序。我开始做一些研究,但对于诸如刷新令牌和令牌存储之类的主题缺乏共识,我感到惊讶。 据我所知,JWT和OAuth是两个不同的协议,它们遵循不同的规范。 但我的问题是,对于一个没有通过第三方资源服务器如Google、Facebook等认证的应用程序,有一个刷新令牌真的有用吗?为什么不让JWT令牌像刷新令牌一样持续时间长。 另一方面,我可以看到,如本文所述,

  • 我有一个基于OAuth2的授权服务器。与访问令牌一起发送的还有刷新令牌。 我可以使用访问令牌获得一个资源,当它过期时,我使用刷新令牌请求一个新的资源。 不过,我也可以用刷新令牌获取资源...是Oauth2的典型行为吗?我以为这个刷新令牌只用于请求新的访问令牌,而不是用于获取受保护的资源。 多谢了。

  • 这是我的身份验证流程: 用户登录后收到两个令牌(具有过期时间的访问令牌和没有过期时间的刷新令牌) 对于每个用户,刷新令牌存储在数据库中名为refreshTokens的json列中(这是一个数组) 在客户端,访问令牌和刷新令牌都存储在本地存储器上 当需要验证用户时,如果访问令牌过期,将使用刷新令牌创建一个新的访问令牌,并将其发送回用户并保持用户登录 当用户注销时,数据库中存储的刷新令牌(在refre

  • null 很抱歉太啰嗦了。 提前谢了。