我正在构建一个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调用。
所以......这是我的问题:
如何保护和验证从应用程序到自己的API的API调用?你会怎么称呼自己的API?就像外部应用程序一样?
以与外部应用程序相同的方式调用API方法(比如运行CURL GET https://api.example.com/accounts)会不会是糟糕的表现?或者应该以不同方式调用内部API? (对不起,如果这个问题很愚蠢)
如果“B”信任“A”,反之亦然:我是否需要任何认证或授权?由于没有涉及用户,只有帐户和业务逻辑。应用程序“B”只需要告诉“A”应该对哪个帐户进行操作。但基本上允许为任何帐户执行所有这些任务。简单地通过HTTPS发送“B”的client_key和client_secret以及请求参数是否可以?
我想我真的只需要oAuth作为方案d),对吗?
答案 0 :(得分:0)
- 如何保护和验证来自应用程序的API调用 它自己的API?你会怎么称呼自己的API?就像外在的一样 申请会吗?
醇>
我不会使用curl访问API,使用codeigniter可以创建API作为库并创建一个调用每个库方法的控制器。这将允许您生成可通过控制器进行Web访问的API,还可以加载库并直接访问这些方法。
- 以同样的方式调用API方法不是性能差 外部应用程序会(比如运行CURL GET) https://api.example.com/accounts)?或者应该调用内部API 不同? (对不起,如果这个问题很愚蠢)
醇>
是的,就像我在#1中提到的那样。
- 如果“B”信任“A”,反之亦然:我是否需要任何身份验证或 完全授权?由于没有涉及用户,只是 帐户和业务逻辑。应用程序“B”只需要告诉“A” 应该为哪个帐户进行操作。但它基本上是 允许为任何帐户执行所有这些任务。会没事的 简单地发送“B”的client_key和client_secret以及 通过HTTPS请求参数?
醇>
如果您通过http外部访问,我建议使用API密钥或某种令牌。如果您正在执行我在#1中提到的控制器/库路由。然后没有。
- 我想我真的只需要oAuth作为方案d),对吗?
醇>
oAuth或API密钥系统,您手动为用户提供密钥。