金融科技/银行应用程序上可能的API授权技术

时间:2019-10-27 11:25:37

标签: rest api security authentication authorization

让我们假设我们已经实现了一个提供金融/银行服务的RESTful API,并希望将其提供给内部开发团队以实现本机移动客户端应用程序。

从这个意义上讲,该应用程序以及相应的API将是公开且可访问,因此,需要以各种可能的方式对访问权限进行访问。

想到的第一个解决方案是提供 client_id client_secret ,并让开发人员使用Authorization http标头签署每个请求:

Authorization: APP client_id:base64(HMAC-SHA256(content, client_secret))

只要服务器“知道”客户端的秘密,API使用的授权就可以顺利运行。

我对此不满意:

  • 每个应用实例都具有相同的client_secret
  • client_secret是不可撤销的
  • 即使被混淆,也可以通过应用程序的源代码轻松显示
  • 总而言之,可能会收到来自未知来源的请求

另一方面,我不想弄乱用户体验,重定向和诸如OAuth之类的额外登录请求。

此类应用还有哪些其他授权技术?著名的金融科技/银行公司遵循哪种授权方式?

1 个答案:

答案 0 :(得分:2)

请勿对应用进行身份验证,而对使用该应用的用户或实体进行身份验证。

像“注册”这样的端点不需要身份验证,那么,不需要身份验证。您也可以根据流量来自的网络等来独立于身份验证来限制访问。这通常是在基础结构中完成的,您不必为此编写代码。

通常,从安全角度来看,发布的客户端应被视为用户控制的。即它们生成的数据也应视为完全由用户控制,即使已签名,混淆或其他内容也是如此。

到目前为止,从后端的角度来看,您还没有提到任何用例,在这种情况下,对客户端软件进行身份验证会以某种方式增加价值。

我实际上确实在通过应用程序和Web UI(以及几个admin-ui)访问的银行后端​​。我们不在乎用户在后端使用哪个ui,我们仅对用户进行身份验证。不需要身份验证的内容(国家/地区列表,地址/ iban解析器等)无需任何内容就可以使用。我什至不知道访问是否在操作中受到限制或控制,这不是我们的工作。