我为一家开发软件产品的公司工作,该软件产品处理银行交易并让用户了解他/她的支出。我们的客户(通常是银行)将产品整合到他们的在线银行中。
我有一个关于保护在线银行和我们系统之间通信的问题。在我提出这个问题之前,我想给你一些背景知识。
银行通常会在托管环境中的一组服务器上安装我们的系统。
我们提供了多种集成方式:
我们目前有一个自定义解决方案,我们为用户生成并签署安全令牌,并将这些请求传递给我们。
但是,由于银行拥有非常严格的安全政策,我们会使用已知且值得信赖的安全协议进行沟通,从而感觉更好。这是一个我们想要解决的重大问题。
所以问题是,哪种协议最适合我上面列出的集成用例?那里有大量的单点登录标准,以及像SAML,oauth等解决方案。我觉得这些解决方案可能对我的情况来说太过分了。
我想找到一个简单的解决方案。由于服务器将在同一主机环境中并排运行,并且完全相互信任,因此最终用户无需授权其中一个(或者在两者之间重定向,单击按钮以授予对应用程序的访问权限)。
也就是说,安全协议不应要求最终用户进行任何干预。最终用户只需登录他/她的在线银行,通过安全通信即可访问我们的网络服务器中的数据。
那么......有什么建议吗?
非常感谢!
OGG
答案 0 :(得分:1)
经过一番考虑,我们决定使用双腿OAuth(网上银行使用消费者密钥和消费者秘密来签署对我们应用的请求)。
OAuth签名可以放在请求标头中,也可以放在请求参数中。它很好地解决了我们的问题,因为REST请求可以被签名,并且IFRAME src URL-s也可以被签名(所有通信都通过HTTPS)。
对于那些感兴趣的人,有几个参考文献:
本文介绍如何将OAuth与IFRAME配合使用:http://developer.tradeshift.com/blog/cross-site-user-verification/
本文提到了OAuth的一些安全问题,以及威胁如何应对:http://software-security.sans.org/blog/2011/03/07/oauth-authorization-attacks-secure-implementation