Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用我们自己的解决方案保护现有API_Api_Security_Oauth 2.0 - Fatal编程技术网

使用我们自己的解决方案保护现有API

使用我们自己的解决方案保护现有API,api,security,oauth-2.0,Api,Security,Oauth 2.0,我必须设计一个与提供的API交互的移动应用程序来交换数据和信息,我已经阅读了API安全、Oauth 2、令牌等等。。。。等等,但我仍然不清楚,以下是要点: 第三方提供的API为黑盒,未实现安全性, 因此,您可以查询属于任何用户的数据 用户应该使用我们的应用程序,使用用户/密码登录,并且只能访问其数据。(一定很有趣 安全,因为如果安全被破坏,我们应该付出很多) 该解决方案需要实施和自托管,而不是来自第三方或云提供商 API调用的示例: ....base url...../{subscribe

我必须设计一个与提供的API交互的移动应用程序来交换数据和信息,我已经阅读了API安全、Oauth 2、令牌等等。。。。等等,但我仍然不清楚,以下是要点:

  • 第三方提供的API为黑盒,未实现安全性, 因此,您可以查询属于任何用户的数据

  • 用户应该使用我们的应用程序,使用用户/密码登录,并且只能访问其数据。(一定很有趣 安全,因为如果安全被破坏,我们应该付出很多)

  • 该解决方案需要实施和自托管,而不是来自第三方或云提供商

API调用的示例:

....base url...../{subscriber-ID}/offers
上面的调用为ID为{subscriber ID}的订阅者获取合适的报价,因此显然,在没有安全性的情况下,我可以查询任何订阅者的报价,但我的目标是在用户/密码和仅查询与所需用户相关的数据之间建立链接

我读了很多书,但我很困惑,因为我是API安全新手。
那么我应该从哪里开始呢?在我的情况下,如何从Oauth 2中获益?只需要一个路线图,而不是如何实现。

oAuth2使用spring安全性是满足这一需求的解决方案

oAuth2中有4种授权类型,适用于不同的场景

  • 客户端凭据:消费者(应用程序)使用仅使用apikey(或clientId)和secret创建的承载令牌呼叫后端。主要用于检索一般信息的匿名呼叫

  • 资源所有者密码凭证(ROPC):消费者(应用程序)使用使用apikey、secret、用户名和密码创建的承载令牌进行呼叫。通常在您(授权服务器)已经知道用户(用户数据库在您自己的系统中处理)时使用

  • 授权码:消费者(应用程序)使用使用授权码创建的承载令牌拨打电话。授权代码由第三方(实际拥有/管理登录用户数据)提供,创建的授权代码链接到登录用户。谷歌和Facebook登录不同的网站就是一个典型的例子。Facebook/Google为这些网站提供了一个授权代码,他们将该代码交换为令牌

  • 隐式授权:密码凭证和授权代码的混合。您从第三方授权服务器获得的不是授权码,而是承载令牌

  • 我一直在搜索授权服务器的简单示例代码,但从未找到。因此,我尝试自己创建它,您可以在这里找到:。仅实现ROPC和客户端凭据

    这不是一个“美丽”的代码。但我想你会学到基本的东西