提问者:小点点

为本地移动应用程序和浏览器以及第三方设计REST API


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

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

然而,我想我会在将来为第三方发布一个API。我该如何为第三方以及上面提到的移动应用程序和浏览器服务呢?

我主要担心的是,我最终会得到一个具有两个不同角色的服务器:一个面向第三方,另一个面向它直接支持的移动应用程序和浏览器。我该如何着手做这件事呢?我想我可以使用一个authorization Code grant,将第三方应用程序与移动/浏览器应用程序分开,并且移动/浏览器应用程序将通过提供API中的整个范围资源而具有完整的功能。


共1个答案

匿名用户

如果我要做您所描述的,我将使用两个API端点,它们可能具有类似的功能,但可以以更优化的方式为预期的客户机服务。

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

版本控制和向后兼容性对于您的内部客户端来说也可能与您的第三方非常不同。

但是,另一方面,您可以通过修改自己的系统并使用Oauth作用域来获得很多好处。

这可能更像是一个哲学上的建筑决策。但从长远来看,我肯定认为有很好的理由将内部API与外部API分开,因为数据可能不同,用法可能不同。