我必须设计一个与提供的API交互以交换数据和信息的移动应用程序,并且我已经阅读了有关API安全性,Oauth 2,令牌等的信息,但我仍然不清楚,以下是要点:
API作为黑匣子,未实现安全性,
因此您可以查询属于任何用户的数据。
用户应使用我们的应用程序,并使用用户名/密码登录并仅访问其数据。 (必须非常 安全,因为如果安全性受到破坏,我们应该付出很多代价)
该解决方案需要实现和自行托管,而不是来自第三方或云提供商。
API调用示例:
....base url...../{subscriber-ID}/offers
上述调用为ID为{subscriber-ID}的订户获得了合适的报价,因此显然,在没有安全性的情况下,我可以查询任何订户的报价,但我的目标是在用户/密码之间链接并仅查询数据与所需用户有关。
我读了很多东西,但是由于我不熟悉API安全性而感到困惑。 那我应该从哪里开始呢?我如何从Oauth 2中受益?只是需要一个路线图,而不是如何实施。
答案 0 :(得分:0)
oAuth2是满足此要求的解决方案。
oAuth2中有4种授权类型,分别用于不同的场景。
客户端凭据:消费者(应用程序)仅使用通过apikey(或clientId)和机密创建的承载令牌来调用后端。通常用于检索通用信息的匿名呼叫。
资源所有者密码凭证(ROPC):使用者(应用程序)使用使用apikey,机密,用户名和密码创建的承载令牌进行呼叫。通常在您(您的授权服务器)已经知道用户(用户数据库在您自己的系统中处理)时使用。
授权码:使用者(应用程序)使用使用授权码创建的承载令牌进行呼叫。授权代码由第三方(实际上拥有/管理已登录用户数据)提供,并且创建的授权代码链接到已登录用户。 Google和Facebook登录各种站点就是一个典型的例子。 Facebook / Google为这些网站提供授权码,然后他们将其交换为令牌。
隐式授予:密码凭证和授权码的混合。您可以从第三方授权服务器获取承载令牌,而不是授权代码。
我一直在寻找授权服务器的简单示例代码很多,但从未找到。因此,我尝试自己创建它,您可以在这里找到https://github.com/abbinv/oauth2Server。仅实现ROPC和客户端凭据。
这不是“美丽”的代码。但我认为您会掌握基础知识。