【问题标题】:Designing a REST API for native mobile apps and browsers AS WELL AS 3rd parties OAuth2为本地移动应用程序和浏览器以及第 3 方 OAuth2 设计 REST API
【发布时间】:2014-04-26 09:04:07
【问题描述】:

我有一个应用程序的想法,它的后端使用 OAuth2 为本地移动应用程序和桌面浏览器提供服务。

阅读 OAuth2 参考后,我意识到我只需要使用简单的Resource Owner Password Credentials Grant,因为这些客户端不是第 3 方客户端。换句话说,我只是将 OAuth2 用作一个简单的登录协议,它可以为原生移动应用程序和浏览器提供服务,而不是使用浏览器的会话和应用程序的令牌(我宁愿通过使用 OAuth2 的密码授权来保持简单明了)。

但是,我想将来我会为第 3 方向公众发布一个 API。 我将如何设法为第三方以及上述移动应用和浏览器提供服务?

我主要担心的是我最终会得到一个具有两种不同角色的服务器:一种用于第 3 方,另一种用于它直接支持的移动应用程序和浏览器。我该怎么做呢?我想我可以使用单个 Authorization Code Grant,并将第 3 方应用程序与移动/浏览器应用程序区分开来,移动/浏览器应用程序将通过向其提供来自 API 的全部范围资源来拥有完整的功能。

【问题讨论】:

    标签: api rest oauth-2.0


    【解决方案1】:

    如果我按照您的描述进行操作,我会使用两个 API 端点,它们可能具有相似的功能,但可以以更优化的方式为预期的客户端提供服务。

    例如,速率限制和其他安全方面对于第 3 方来说非常好,但对于内部客户来说可能有点多余。

    内部客户端的版本控制和向后兼容性也可能与您的第 3 方有很大不同。

    但是,另一方面,您可以通过 dogfooding 自己的系统并使用 Oauth 范围获得很多好处。

    这可能更像是一个哲学架构决策。 但从长远来看,我确实看到了将内部 API 与外部 API 分开的充分理由,因为数据可能不同并且使用可能会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2015-10-24
      • 2011-09-22
      • 2020-11-06
      • 2021-11-28
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多