2012-07-12 61 views
4

因此,我们正在开发一个Web应用程序Symfony2(简短编辑:Symfony2令人震惊),与SOA的界限一致。所有的数据都在我们的jQuery动力前端和Symfony2后端之间来回放送,格式化为一个JSON,而这正是我们需要解决的问题。如何保护SOA风格Symfony2应用程序

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

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

所以我们问题的症结在于,“安全层”期望从表单提交中获得的表单提交的POST数据(通常位于后端首先提供的页面上)。我们设置了一个从JSON化数据创建的PHP数组。那么,该怎么做?我们应该:

  • 创建一个自定义身份验证服务,该服务构建用于处理由le JSON构成的数组?
  • 调整我们的请求钩子来检查每个请求的目标URI,然后将请求的JSON按照“安全层”期望的表单编码字符串进行处理?
  • 调整“安全层”,以便它可以工作的JSON转php数组?
+0

+1欢迎来到SO。我喜欢看到像这样的问题,试图进一步推动一个强大的系统。另外,我喜欢你的'布尔'线。 – 2012-07-12 18:32:47

+0

你在哪里看到Symfony期望“表单编码POST”?在sf2中实现了各种认证机制,表单发布仅仅是其中的一种。 – MDrollette 2012-07-12 19:11:12

+0

@军械词!谢谢。 – nothankyou 2012-07-12 20:56:19

回答

1

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

+0

我喜欢这个想法越来越多。健康而令人满意。我们会推出来看看会发生什么! – nothankyou 2012-07-12 22:02:41

+0

完全合作!谢谢你的提示! – nothankyou 2012-07-16 01:52:18