【问题标题】:how to communicate b/w two web applications securely using API?如何使用 API 安全地在两个 Web 应用程序之间进行通信?
【发布时间】:2012-10-26 00:57:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: php api oauth


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这实际上取决于您公开 API 的方式。

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-03
          • 2020-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多