没有用户权限的API的OAuth设计

时间:2010-07-30 05:28:16

标签: api oauth

我正在开发一个将由我的客户用户使用的API。以下是流程的样子:

  1. 我的基于云的服务的用户创建了一个API密钥。
  2. 用户将API密钥嵌入到自己的自定义应用程序中。
  3. 用户将应用程序部署到他们自己的最终用户。
  4. 该应用程序与我们的API进行对话。
  5. 我正在寻找有关如何保护此API的建议。我看到了一些问题:

    1. API密钥必须嵌入到用户应用程序中,因此容易被盗和滥用。
    2. 一旦API密钥被泄露,就可以轻松禁用它,但是我的用户如何更新他们的应用程序以使用新的API密钥,而不必重建应用程序并重新部署。
    3. 有没有人对如何设计这个有什么想法?

2 个答案:

答案 0 :(得分:1)

我可能会弄错,但也许您可以让客户的用户与客户的API进行对话。基本上,您的客户会将他们的密钥保存在他们的服务器上,而不是将它们嵌入到他们为用户提供的客户端中,因此不能被高举(除非他们的服务器当然受到了损害)。然后,用户将通过客户的API与您的API通信。

它会慢一点,需要你的客户做更多的工作,但也更安全。

答案 1 :(得分:0)

我可以看到两个解决方案,虽然我确信还有更多......

  1. 使用oauth的RSA签名方法,并使用“基于云的服务”作为交换机制(或公共证书提供商)实施密钥的安全证书交换。

  2. 实施一项服务,允许客户自动“更新”其消费者密钥/密钥,然后使用RSA或其他一些公钥加密方法保护该机制。

  3. 这些都不容易,并且需要用户的应用程序“打电话回家”才能更新他们的消费者密钥。

    将来我认为OAuth 2至少会为这样的事情提供协议定义,但就目前而言,如果你使用的是OAuth 1.0a,那么你想要做的事情并不能很好地适应规范(即你必须自己设计很多。)