1

我正在使用password授权类型。由于这种授权类型的性质,API 完全信任客户端,在我的情况下,它们共享相同的所有者。

每个客户端都将由 API 所有者添加到 API,方法是手动发布到oauth/v2/token端点,检索访问令牌,然后手动将其放入客户端的数据库中。

使用 API 服务的客户端将需要始终完全可用 API。如果他们的访问令牌到期,他们的 API 调用将返回401 Unauthorized响应。因此,API 将不可用,直到 API 所有者oauth/v2/token使用刷新令牌手动发回端点,接收新的访问令牌,并在客户端的外部数据库中更新新的客户端访问令牌以供他们使用。

我的问题:理想情况下,我希望访问令牌永不过期。这是可能吗?我查看了捆绑包中的代码,但似乎没有。如果没有,其他人是如何解决这个问题的,以使客户端的 Token 刷新无缝?

4

2 回答 2

2

在 FOSOAuthServerBundle 配置中,您可以将令牌生命周期更改为您想要的任何值。

看看:https ://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/configuration_reference.md

于 2018-03-22T16:10:29.333 回答
0

我不知道这是否真的是一个答案或更多的评论,因为虽然它对我有用,但我觉得它远非“最佳实践”。但我没有足够的声誉发表评论。无论如何:

我所做的只是'expires_at'在 access_token 表中手动设置为 null 。在 phpmyadmin 中手动执行它只是因为我需要处理非常非常少的客户端和令牌。

现在,如果您想“自动化”它,请连接到您的 AccessToken 实体上的 pre_persist 事件,并'expires_at'在持久化之前设置为 null。我想这应该可行。

可能“最佳实践”是在您的客户端应用程序中处理令牌刷新。也就是说,首先连接到您的 API,如果是 401 响应(未授权),请刷新令牌并重试连接。出于性能原因,我停止尝试这种方法。

于 2016-07-19T18:35:39.337 回答