oauth2如何处理刷新令牌


oauth2 how to deal with refresh token

我一直在尝试实现我自己的OAuth2 Provider,但我有点拘泥于refresh_token部分。我该怎么处理?我应该在API或客户端中检查refresh_token吗?如果我不清楚,我会给出一个场景:

假设我在API端checkToken中有一个函数,它检查令牌是否无效或过期。我轻而易举地通过了无效考试。然后我检查过期的零件。所以棘手的部分就在这里。在函数checkToken中,我应该添加吗

if(findRefreshToken($client_id, $user_id)) {
  $this->grantRefreshToken($client_id, $client_secret, $user_id);
} else {
   $this->error(401, 'Token expired');
}

或者我应该只有错误401,而客户发现该怎么办?

以下是我使用该库实现oAuth库和api的经验。

  1. 如果您将其实现为库,则需要分别拥有checkToken和refreshToken。因此,api(取决于需求)可以在检查/验证令牌时决定是否刷新令牌。

  2. 在api中执行操作时,这同样取决于要求。如果要求用户会话从上次访问起应处于活动状态一段时间(例如4小时),那么每次检查/验证令牌时最好刷新令牌。可以在客户端上执行相同的刷新令牌,但问题是客户端必须在每次api调用后调用刷新令牌,这意味着每个api将有2次调用。

希望这能澄清。