0

我有一个主网站(包含所有数据)和多个从主网站获取数据的客户网站。每个客户网站都可以访问主网站上的不同数据集。我想为此创建一个基于 PHP 的 Web API。这是我的第一个 API,所以我不确定什么是最好和最安全的方法。

经过一番谷歌搜索后,我发现 OAuth 是 API 最常见的身份验证方法。但是在我的情况下,我希望客户端网站配置一次,然后通信应该是自动的,即通信应该在后台进行,没有任何用户干预。这种情况是否需要 OAuth?

或者我可以在这里实施任何其他方法吗?

4

3 回答 3

1

oauth 是一种复杂的实现方式来满足您的需求。

如果您使用的是休息,我建议在标头中使用基本身份验证并使用 SSL,以便您的通信被加密。

您可以制作一个小的 SecurityFilter 来检查任何带有 url 模式/api/的请求是否基本身份验证是正确的并且它使用 SSL ...

于 2012-10-19T18:25:10.507 回答
1

这实际上取决于您如何公开 API。

如果您使用的是 REST,则基于 HTTPS 的 HTTP Basic Auth 就足够了。当提供的方法足够时,我看到很多人尝试实施自己的解决方案。

如果您使用的是 SOAP,则可以使用一种基于 SOAP 的方法:WS-Security(它只是一个使用从 SAML 断言到 OAuth 令牌的任何东西的标准)。

如果通过 HTTPS 传递基本身份验证凭据对您来说过于“开放”,因为凭据保存在客户端服务器的某个配置中,那么 OAuth2 可能是最好的解决方案。在服务器端执行 OAuth 不需要任何用户交互。您只需将令牌存储在服务器配置中,然后让 OAuth 库处理其余的事情。PHP 有一个用于此PHP OAuth 库的库。有很多用于 PHP 的 OAuth2 库。只需谷歌它。

于 2012-10-19T18:27:43.683 回答
0

经过更多的谷歌搜索和研究,我找到了我的问题的答案:

我解释的场景是 2-legged oauth 的示例(可以找到很多关于 2-legged 和 3-legged oauth 的文章)

此外,OAuth 实现起来并不难,事实上对于熟悉 API 和 Auth 系统的开发人员来说非常容易。

这是一个非常好的 php OAuth 库的链接,带有示例代码http://code.google.com/p/oauth-php/

于 2012-10-25T16:57:20.307 回答