如何保护SOA样式Symfony2应用程序

时间:2012-07-12 17:47:07

标签: security rest symfony soa

因此,我们正在沿着SOA的方向在Symfony2中开发一个Web应用程序(简短的社论:Symfony2非常棒)。所有数据都在我们的jQuery驱动的前端和Symfony2后端之间来回放置,格式化了一个j JSON,其中存在很大的问题。

Symfony2提供了一个强大的安全系统,但它似乎依赖于“安全层”拦截表单提交并使用表单编码的POST数据来处理身份验证尝试。这对我们的应用程序来说是有问题的,因为我们只使用JSON。我站在那里,使用JSON为每一个请求和响应除了身份验证是...... bool的表,坦率地说。难闻的气味,糟糕的juju,无论你怎么称呼它。

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

因此,我们的问题的关键在于“安全层”期望从表单提交中获取表单编码的POST数据(通常在后端服务的页面上)。我们将其设置为从JSONified数据创建的PHP数组。那又怎么样?我们应该:

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

1 个答案:

答案 0 :(得分:1)

创建自己的身份验证提供程序非常简单。您可以遵循此cookbook article并稍微修改它以处理您的JSON请求,而不是该示例中使用的WSSE。