保护同一主机环境中受信任服务器之间的通信安全

时间:2011-05-12 11:03:50

标签: web-services security oauth single-sign-on saml

我为一家开发软件产品的公司工作,该软件产品处理银行交易并让用户了解他/她的支出。我们的客户(通常是银行)将产品整合到他们的在线银行中。

我有一个关于保护在线银行和我们系统之间通信的问题。在我提出这个问题之前,我想给你一些背景知识。

银行通常会在托管环境中的一组服务器上安装我们的系统。

我们提供了多种集成方式:

  1. Web服务 - 在这种情况下,银行将在服务器上调用一组REST服务,然后生成包含结果的网页(在服务器端)。
  2. iframe - 在这种情况下,银行会将iframe嵌入其在线银行网页中。 iframe包含直接从我们的Web应用程序呈现的网页。
  3. 内嵌小部件 - 在这种情况下,银行会在其网页上嵌入JavaScript引用。加载文档时,JavaScript小部件将使用AJAX调用自行呈现。它们与银行服务器上的代理进行通信,银行服务器又与我们的webapp通信。
  4. 我们目前有一个自定义解决方案,我们为用户生成并签署安全令牌,并将这些请求传递给我们。

    但是,由于银行拥有非常严格的安全政策,我们会使用已知且值得信赖的安全协议进行沟通,从而感觉更好。这是一个我们想要解决的重大问题。

    所以问题是,哪种协议最适合我上面列出的集成用例?那里有大量的单点登录标准,以及像SAML,oauth等解决方案。我觉得这些解决方案可能对我的情况来说太过分了。

    我想找到一个简单的解决方案。由于服务器将在同一主机环境中并排运行,并且完全相互信任,因此最终用户无需授权其中一个(或者在两者之间重定向,单击按钮以授予对应用程序的访问权限)。

    也就是说,安全协议不应要求最终用户进行任何干预。最终用户只需登录他/她的在线银行,通过安全通信即可访问我们的网络服务器中的数据。

    那么......有什么建议吗?

    非常感谢!

    OGG

1 个答案:

答案 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