使用不同级别的身份验证管理API请求

时间:2012-07-24 19:35:04

标签: php api codeigniter rest oauth

我正在构建一个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. 我想我真的只需要oAuth作为方案d),对吗?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如何保护和验证来自应用程序的API调用   它自己的API?你会怎么称呼自己的API?就像外在的一样   申请会吗?
  2.   

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

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

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

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

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

  
      
  1. 我想我真的只需要oAuth作为方案d),对吗?
  2.   

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