我正在为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客户端实现提交补丁
access_type: offline
参数不是OAuth中的标准参数,但它被Google在其令牌端点请求中使用-您必须传递它才能获得刷新令牌另一方面,刷新令牌是OAuth标准的一部分。RFC 6749表示在对令牌端点的响应中:
因此,刷新令牌是标准的一部分,但其操作方式应与其API不同
相关问题 更多 >
编程相关推荐