Rails 和 OAuth2

Rails and OAuth2

这里更多的是一个理论问题 - 当您不想使用 OAuth 但正在使用需要它的 API 时,您如何绕过使用 OAuth。

例如,最近我浏览了 Bing 广告 API 并注意到他们现在要求您在流程中执行 OAuth。如果您制作的应用程序允许用户通过您的应用程序控制他们的 Bing 广告帐户,这就有意义了。但是,假设您希望所有用户都与一个 Bing 广告帐户互动。

是否可以在后台对所有 OAuth 部分进行硬编码,并且只对每个用户使用相同的身份验证,以便将他们的内容发送到相同的 Bing Ads 帐户。 - 如果是这样,会有什么样的负面影响?

虽然如果 API 需要使用 OAuth 是不可能的,但 OAuth 不仅可以用于 "access delegated to client by current user" 用例。正如您所建议的,如果您希望您的应用程序的所有用户都与 您的 Bing 帐户进行交互("on your behalf" 在 OAuth 发言中),您当然可以使用 OAuth 来做到这一点.

对于 OAuth 2.0 实施,这意味着 以某种方式为您的应用程序获取访问令牌,最好是刷新令牌,例如你自己通过授权代码流程一次(另外,一些服务允许你在他们的网站 UI 中生成令牌)。然后你会 "hard-configure" 你的应用程序中的令牌并使用 it/them 与 Bing API.

交谈

如果包含刷新令牌和访问令牌,那么只要旧访问令牌过期,您的应用程序就可以在后端获得新的访问令牌,而您(或您的用户)不必再次经历初始流程。

请注意,这不是移动应用程序的好做法,在移动应用程序中,您必须使用嵌入在二进制包中的令牌来分发您的应用程序。这些令牌可以通过 hacking/scanning 这些二进制文件轻松获取。但是当令牌在后端服务中使用并且从不在前端暴露时,这是一个完全有效的场景。