刷新OAuth刷新令牌是标准行为吗?

2024-06-16 08:48:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为OAuth API(特别是TD Ameritrade)实现一个API包装器,我遇到了一个有趣的功能。与我见过的大多数OAuth实现不同,在这些实现中,刷新令牌在一段时间内是有效的,然后用户必须重新验证,该API支持refreshing the refresh token itself

特别是,如果您向身份验证端点发送以下格式的请求,您将获得一个全新的刷新令牌,该令牌有效期为90天:

grant_type: refresh_token
refresh_token: <Refresh Token>
access_type: offline
client_id: <OAuth API Key>

有几件事很奇怪。首先,我以前从未见过这种功能。我使用的大多数API似乎都不支持这种刷新。其次,我似乎找不到任何直接的方法来使用像authlib这样的常见OAuth客户机库实现来实现这一点。这些库通常支持透明访问令牌刷新,但我还没有看到类似透明刷新令牌刷新的内容。最后,我认为在本例中使用refresh_token授权类型是重载的,因为相同的授权类型用于刷新访问令牌,而不是刷新令牌。两者之间的唯一区别是access_type: offline的使用

那么,我的问题是:在一些RFC中描述的这种标准OAuth行为,我只是还没有设法挖掘出来,还是这个API的开发人员侵入了一个与标准兼容的API的非标准行为?答案将决定我是一次性在自己的库中实现透明刷新,还是尝试向我最喜欢的OAuth客户端实现提交补丁


Tags: the用户功能tokenapi类型标准access
1条回答
网友
1楼 · 发布于 2024-06-16 08:48:11

access_type: offline参数不是OAuth中的标准参数,但它被Google在其令牌端点请求中使用-您必须传递它才能获得刷新令牌

另一方面,刷新令牌是OAuth标准的一部分。RFC 6749表示在对令牌端点的响应中:

The authorization server MAY issue a new refresh token, in which case the client MUST discard the old refresh token and replace it with the new refresh token. The authorization server MAY revoke the old refresh token after issuing a new refresh token to the client. If a new refresh token is issued, the refresh token scope MUST be identical to that of the refresh token included by the client in the request.

因此,刷新令牌是标准的一部分,但其操作方式应与其API不同

相关问题 更多 >