让我们假设我们已经实现了一个提供金融/银行服务的RESTful API,并希望将其提供给内部开发团队以实现本机移动客户端应用程序。
从这个意义上讲,该应用程序以及相应的API将是公开且可访问,因此,需要以各种可能的方式对访问权限进行访问。
想到的第一个解决方案是提供 client_id 和 client_secret ,并让开发人员使用Authorization http标头签署每个请求:>
Authorization: APP client_id:base64(HMAC-SHA256(content, client_secret))
只要服务器“知道”客户端的秘密,API使用的授权就可以顺利运行。
我对此不满意:
另一方面,我不想弄乱用户体验,重定向和诸如OAuth之类的额外登录请求。
此类应用还有哪些其他授权技术?著名的金融科技/银行公司遵循哪种授权方式?
答案 0 :(得分:2)
请勿对应用进行身份验证,而对使用该应用的用户或实体进行身份验证。
像“注册”这样的端点不需要身份验证,那么,不需要身份验证。您也可以根据流量来自的网络等来独立于身份验证来限制访问。这通常是在基础结构中完成的,您不必为此编写代码。
通常,从安全角度来看,发布的客户端应被视为用户控制的。即它们生成的数据也应视为完全由用户控制,即使已签名,混淆或其他内容也是如此。
到目前为止,从后端的角度来看,您还没有提到任何用例,在这种情况下,对客户端软件进行身份验证会以某种方式增加价值。
我实际上确实在通过应用程序和Web UI(以及几个admin-ui)访问的银行后端。我们不在乎用户在后端使用哪个ui,我们仅对用户进行身份验证。不需要身份验证的内容(国家/地区列表,地址/ iban解析器等)无需任何内容就可以使用。我什至不知道访问是否在操作中受到限制或控制,这不是我们的工作。