首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用我们自己的解决方案保护现有的API

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

Stack Overflow用户
提问于 2018-08-09 12:37:37
回答 1查看 969关注 0票数 0

我必须设计一个与提供的API交互的移动应用程序来交换数据和信息,我读过关于API安全性的文章,Oauth 2,令牌,.等等,但我还不清楚以下几点:

  • API由第三方作为黑匣子提供,没有实现安全性,所以您可以查询属于任何用户的数据。
  • 用户应该使用我们的应用程序,用用户/密码登录,并且只访问他的数据。(必须非常安全,因为如果安全问题,我们应该付出很大的代价)
  • 解决方案需要实现和自我托管,而不是来自第三方或云提供商。

API调用的示例:

代码语言:javascript
复制
....base url...../{subscriber-ID}/offers

上面的呼叫为ID为{订户-ID}的用户提供了合适的服务,因此显然,由于没有安全性,我可以查询任何订阅者的报价,但我的目标是在用户/密码和仅查询与所需用户相关的数据之间进行链接。

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 15:24:03

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

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

  1. 客户凭证:使用者(app)使用使用apikey(或clientId)创建的承载令牌调用后端,并且只使用机密。主要用于检索通用信息的匿名调用。
  2. 资源所有者密码凭证(ROPC):使用者(app)使用使用apikey、保密、用户名和密码创建的承载令牌进行呼叫。通常在您(您的授权服务器)已经知道用户时使用(用户数据库是在您自己的系统中处理的)。
  3. 授权代码:使用者(app)使用使用授权代码创建的承载令牌进行呼叫。授权代码由第三方(实际拥有/管理登录用户数据)和链接到登录用户的创建授权代码提供。谷歌和Facebook登录不同的网站就是一个典型的例子。Facebook/Google为这些网站提供了一个授权代码,并将该代码交换为令牌。
  4. 隐式授予:密码、凭据和授权代码的混合。您可以从第三方授权服务器获得一个承载令牌,而不是授权代码。

我一直在搜索授权服务器的简单示例代码,但一直没有找到。因此,我尝试自己创建它,您可以在这里找到它:https://github.com/abbinv/oauth2Server。只实现ROPC和客户端凭据。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51767252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档