【问题标题】:How to Secure an SOA style Symfony2 Application如何保护 SOA 风格的 Symfony2 应用程序
【发布时间】:2012-07-12 13:02:27
【问题描述】:

所以我们正在Symfony2 中开发一个Web 应用程序(简短的社论:Symfony2 真是太棒了)沿着SOA 的思路。所有数据都在我们的 jQuery 驱动的前端和格式化为 la JSON 的 Symfony2 后端之间来回传输,这就是问题所在。

Symfony2 提供了一个强大的安全系统,但它似乎取决于“安全层”拦截表单提交并使用表单编码的 POST 数据来处理身份验证尝试。这对我们的应用程序来说是有问题的,因为我们只使用 JSON。从我的立场来看,对每个请求和响应都使用 JSON except 身份验证是......坦率地说,这是一张布尔表。难闻的气味,坏的juju,不管你怎么称呼它。

现在,Symfony2 允许创建事件侦听器,这些侦听器连接到与请求的生命周期和完整响应相关的一系列事件。我们使用其中一个钩子来解码每个 POST 请求附带的 JSON,以便相关控制器只需要担心直接使用 php 数组,而无需进行任何解码或反序列化或其他操作。

因此,我们问题的症结在于“安全层”期望从表单提交(通常在后端首先服务的页面上)获得表单编码的 POST 数据。我们准备为它提供一个从 JSON 化数据创建的 PHP 数组。那怎么办?我们应该:

  • 创建一个自定义身份验证服务,用于处理由 le JSON 制成的数组?
  • 调整我们的请求挂钩以检查每个请求的目标 uri,然后将请求的 JSON 转换为“安全层”期望的表单编码字符串?
  • 调整“安全层”以便它可以处理 JSON 转换的 php 数组?

【问题讨论】:

  • +1 欢迎来到 SO。我喜欢看到这样的问题,它们试图进一步推动一个强大的系统。另外,我喜欢你的“布尔表”行。
  • 你在哪里看到 Symfony 期望“表单编码的 POST”? sf2中实现了各种认证机制,form post只是其中之一。
  • @MDrollete 嗯,这是个好问题。该详细信息 特定于表单发布方法。我们的思路是,form post 方法的功能最接近我们需要发生的事情,即我们可以在 uri 上触发数据有效负载(文件用户名和文件密码),并让后端进行身份验证。它。其他方法很糟糕(http auth)或涉及我们真正不需要的整个协议层(digest,x509)。

标签: security rest symfony soa


【解决方案1】:

创建自己的身份验证提供程序相当简单。您可以按照此cookbook article 稍作修改以处理您的 JSON 请求,而不是该示例中使用的 WSSE。

【讨论】:

  • 我越来越喜欢这个想法。健康令人满意。我们会推出它,看看会发生什么!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多