访问令牌和刷新令牌流程
Access Token and Refresh Token flow
我已阅读有关 JWT 以及访问令牌和刷新令牌的信息。我知道您必须在很短的时间(分钟)内设置访问令牌过期时间,并在过期时使用刷新令牌获取新的访问令牌。
有三件事我不清楚:
- 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码?
- 谁检查刷新令牌是否过期? (显然刷新令牌也需要过期,尽管它需要更长的时间才能过期)。
- 从我的角度来看,如果刷新令牌过期,则必须提示用户重新登录。这是在某些场景(移动应用程序)中需要避免的事情。如何避免?
回答您的问题:
- 当访问令牌过期时,API 使用访问令牌将 return 出错。
- API 使用刷新令牌获取新的访问令牌将 return 特定刷新令牌相关的错误。
- 关于刷新令牌的刷新,请看下面的回答。
通常您需要为每个 API 调用做一些错误处理。
关于刷新令牌的刷新
我调查了更多,这是我发现的:
- 首次登录并授权获取访问令牌和刷新令牌(可选),如果访问令牌永不过期则不需要刷新令牌。 => https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/,最近(2019/11/16),我发现这真的取决于 API 提供商的实现,例如 PayPal,他们提供具有过期时间但没有刷新令牌的访问令牌, 因此当访问令牌过期时,您必须重新获取新的访问令牌。
- 当访问令牌过期时,使用刷新令牌获取新的访问令牌和刷新令牌(可选)=> https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/。这次你有一个新的刷新令牌,这意味着每次刷新访问令牌时你都有一个新的刷新令牌。如果响应没有新的新鲜令牌,您只有第一步的旧刷新令牌。
- 如果用户长时间不使用应用程序,则用户没有机会刷新访问令牌和刷新令牌,则用户需要在刷新令牌过期后长时间重新登录。
- 就像@jwilleke 说的,即使用户不使用应用程序,服务器端或应用程序也可以自动为用户执行此操作,然后它将始终具有新的访问令牌和刷新令牌。
我已阅读有关 JWT 以及访问令牌和刷新令牌的信息。我知道您必须在很短的时间(分钟)内设置访问令牌过期时间,并在过期时使用刷新令牌获取新的访问令牌。
有三件事我不清楚:
- 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码?
- 谁检查刷新令牌是否过期? (显然刷新令牌也需要过期,尽管它需要更长的时间才能过期)。
- 从我的角度来看,如果刷新令牌过期,则必须提示用户重新登录。这是在某些场景(移动应用程序)中需要避免的事情。如何避免?
回答您的问题:
- 当访问令牌过期时,API 使用访问令牌将 return 出错。
- API 使用刷新令牌获取新的访问令牌将 return 特定刷新令牌相关的错误。
- 关于刷新令牌的刷新,请看下面的回答。
通常您需要为每个 API 调用做一些错误处理。
关于刷新令牌的刷新
我调查了更多,这是我发现的:
- 首次登录并授权获取访问令牌和刷新令牌(可选),如果访问令牌永不过期则不需要刷新令牌。 => https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/,最近(2019/11/16),我发现这真的取决于 API 提供商的实现,例如 PayPal,他们提供具有过期时间但没有刷新令牌的访问令牌, 因此当访问令牌过期时,您必须重新获取新的访问令牌。
- 当访问令牌过期时,使用刷新令牌获取新的访问令牌和刷新令牌(可选)=> https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/。这次你有一个新的刷新令牌,这意味着每次刷新访问令牌时你都有一个新的刷新令牌。如果响应没有新的新鲜令牌,您只有第一步的旧刷新令牌。
- 如果用户长时间不使用应用程序,则用户没有机会刷新访问令牌和刷新令牌,则用户需要在刷新令牌过期后长时间重新登录。
- 就像@jwilleke 说的,即使用户不使用应用程序,服务器端或应用程序也可以自动为用户执行此操作,然后它将始终具有新的访问令牌和刷新令牌。