1

我一直在尝试实现自己的 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 并且客户发现如何处理它?

4

1 回答 1

1

这是我在使用这个库实现 oAuth 库和 api 时的经验。

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

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

希望这会澄清。

于 2013-07-23T06:01:26.613 回答