OAuth - 使授权代码流在没有网站或用户的情况下工作?

OAuth - Make Authorization Code flow work without website or user?

我有一个后端处理器(想象一个每天生成报告的 chron 作业),它需要与第三方系统集成。他们的 API 仅支持“授权码”授权类型。问题是我什至无法填写令牌请求,因为我没有 redirect_uri(没有网站),而且我绝对没有任何类型的用户。我将通过他们的开发人员门户 (Mashery) 为我的后端报表处理器应用程序提供 OAuth clientId 和密码。

我想使用“客户端凭据”授权 type/flow,因为我只是一个后端服务。

有没有办法伪造或破解它,以便我的小后端服务可以以某种方式使用授权代码流?

提前致谢

不,没有办法破解它。客户端凭据仅对客户端进行身份验证。为客户端凭据颁发的令牌没有关于用户的信息。如果他们 API 需要有关用户的信息(您可能只获得有关您的用户的信息),那么您需要使用 Code Flow 颁发令牌。

您可以自己生成 OAuth 令牌。例如。您可以使用 oauth.tools 通过他们的授权服务器执行代码流,或者您可以使用虚拟重定向 URI(例如 http://localhost)从浏览器执行流程,获取授权请求返回的代码并执行来自 curl 的令牌请求。

获得访问和刷新令牌后,您可以在脚本中对它们进行硬编码(或从环境变量或文件等中读取它们)。然后只要访问令牌有效就可以调用 API ,并在其过期时使用刷新令牌获取新的访问令牌。只要刷新令牌有效,您就不必执行新的代码流。