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

Eri*_*ith 10 api oauth

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

  1. 我的基于云的服务的用户创建了一个API密钥.
  2. 用户将API密钥嵌入到自己的自定义应用程序中.
  3. 用户将应用程序部署到他们自己的最终用户.
  4. 该应用程序与我们的API对话.

我正在寻找有关如何保护此API的建议.我看到一些问题:

  1. API密钥必须嵌入到用户应用程序中,因此容易被盗和滥用.
  2. 一旦API密钥被泄露,就可以轻松禁用它,但是我的用户如何更新他们的应用程序以使用新的API密钥,而不必重建应用程序并重新部署.

有没有人对如何设计这个有任何想法?

Hyl*_*dan 0

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

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

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

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

将来我认为 OAuth 2 至少会为这样的事情提供协议定义,但现在,如果您使用 OAuth 1.0a,您想要做的事情并不太适合规范(即您有自己设计大部分内容。)

  • 由于该应用程序被分发给一群不受信任的用户,那么他们中的任何一个人都不能简单地反编译该应用程序并获取消费者和秘密密钥并能够滥用该服务吗?我想不出一种方法可以防止这种类型的虐待。我唯一能想到的就是能够阻止滥用该服务的 IP。 (4认同)