如何用OAuth表示真实用户和其他api?

时间:2015-11-12 13:17:59

标签: api oauth

我有一个我想要使用OAuth保护的API。我的API是通过真正的人类用户使用的网络前端访问的,他们都拥有自己的帐户(几千个),并且它也被一些合作伙伴公司的API使用(不到一百个),它们也应该有单独的帐户

Diagram illustrating the users of the API

我想使用OAuth保护API,我必须决定如何代表不同的用户。在OAuth中,有两个不同的概念,客户端和用户,其中客户端是更高级别的概念,每个用户都在其中一个客户端下。

我可以考虑两种不同的方式来表示这些API帐户:

  • 拥有一个客户端,并为每个人类用户和每个合作伙伴API提供单独的用户
  • 为人类用户设置一个客户端,为每个人类用户设置一个单独的用户。并为每个合作伙伴API提供单独的客户端

这两种方法中的哪一种是OAuth中更惯用的方法?从技术角度来看,我认为这两种解决方案都没有太大的优势或劣势。

(我之所以感到困惑,因为客户端凭据流被描述为用于API到API的身份验证,这对于验证合作伙伴API似乎有意义。但是,大多数OAuth指南还说它应该仅用于可信任的 API(无论这意味着什么),甚至是内部API,但这些合作伙伴API绝对不是内部的。)

1 个答案:

答案 0 :(得分:1)

如果每个应用程序背后都有单独的客户端(包括JS用户,对于通过Web前端访问API的用户),实施将统一。 在这种情况下,还可以管理每个应用程序的ACL,这将为用户定义最大权限(用户可以选择为应用程序提供更少的权限)。

另一方面,更简单的方法是将Cookie用于Web前端用户,将OAuth用于合作伙伴应用程序。但在这种情况下,您需要支持两种身份验证选项。