1

我正在构建一个 RESTful API,试图了解如何使用不同级别的身份验证访问 API。

这些是我的场景:

a) Web 应用程序“A”处理所有帐户和计费。它应该能够调用自己的 API。

b) Web 应用程序“B”(受 Web 应用程序“A”信任,反之亦然)应该能够对 Web 应用程序“A”进行 API 调用,以验证和创建新帐户。“A”管理和存储所有帐户。

c) Web 应用程序“B”有自己的 API,也应该能够调用自己的 API。“B”管理和存储所有用户(与“A”中的帐户相关联)。

d) 第三方应用程序“C”应该能够代表“B”的用户对应用程序“B”进行 API 调用。

所以......这是我的问题:

  1. 您如何保护和验证从应用程序对其自身 API 的 API 调用?你会如何调用自己的 API?就像外部应用程序一样?

  2. 以与外部应用程序相同的方式调用 API 方法(比如运行 CURL GET https://api.example.com/accounts ) ,性能会不会很差?还是应该以不同的方式调用内部 API?(对不起,如果这个问题很愚蠢)

  3. 如果“B”信任“A”,反之亦然:我是否需要任何身份验证或授权?由于不涉及用户,只涉及帐户和业务逻辑。应用程序“B”只需要告诉“A”应该对哪个帐户进行操作。但基本上允许为任何帐户执行所有这些任务。可以简单地通过 HTTPS 发送“B”的 client_key 和 client_secret 以及请求参数吗?

  4. 我想我真的只需要场景 d) 的 oAuth,对吗?

4

1 回答 1

0
  1. 您如何保护和验证从应用程序对其自身 API 的 API 调用?你会如何调用自己的 API?就像外部应用程序一样?

我不会使用 curl 来访问 API,使用 codeigniter 您可以将 API 创建为库并创建一个调用每个库方法的控制器。这将允许您生成可通过控制器通过 Web 访问的 API,还可以加载库并直接访问方法。

  1. 以与外部应用程序相同的方式调用 API 方法(比如运行 CURL GET https://api.example.com/accounts ) ,性能会不会很差 ?还是应该以不同的方式调用内部 API?(对不起,如果这个问题很愚蠢)

是的,就像我在#1 中提到的那样。

  1. 如果“B”信任“A”,反之亦然:我是否需要任何身份验证或授权?由于不涉及用户,只涉及帐户和业务逻辑。应用程序“B”只需要告诉“A”应该对哪个帐户进行操作。但基本上允许为任何帐户执行所有这些任务。可以简单地通过 HTTPS 发送“B”的 client_key 和 client_secret 以及请求参数吗?

如果您通过 http 从外部访问,我建议您使用 API 密钥或某种令牌。如果您正在执行我在 #1 中提到的控制器/库路由。那就不要。

  1. 我想我真的只需要场景 d) 的 oAuth,对吗?

oAuth 或 API 密钥系统,您手动向用户提供密钥。

于 2012-07-26T17:00:34.787 回答