2012-04-02 39 views
2

我有一个REST API和该API的前端,都使用Symfony2编写。
在前端我已经写自定义用户提供程序来创建在前端用户对象,基于来自像(散列)密码,盐后端信息等
每本文档:http://symfony.com/doc/current/cookbook/security/custom_provider.html将自定义用户提供程序与http基本的哈希密码组合到后端api

然而,对于我的大部分API请求,我都需要HTTP基本身份验证凭据。但据我所知,对于基本我需要明文密码。我没有在前端,我只有我的自定义用户提供程序的哈希版本。

我可以以某种方式使用HTTP基本与散列密码版本?
或者我可以拦截_username和前端的登录表单的_password领域,并将其保存在会话(不知道这是正确的,但它会解决它)

我已经试过了后者,通过将登录表单发送到我自己的URL而不是'login_check',这样我就可以看到_username和_password字段,但是之后我需要将它转发到'/ login-check'以让Symfony2做到这一点。尽管这样做仍然失败,因为他'找不到控制器'(正常使用时,Sf2在没有我设置控制器的情况下拦截login_check调用,但我想它不会在你开始搞乱它时)。

任何建议如果你之前它向服务器发送散列密码将受到欢迎,

干杯,

迪特

+0

为什么不在后端和前端使用相同的防火墙? – julesbou 2012-04-02 13:03:30

+0

你能详细说明你的意思吗?我不认为我遵循。这两种防火墙的情况大不相同:后端一个由http basic auth组成,并且是无状态的,而前端certanly不能是无状态的,需要通过表单进行身份验证,而不是HTTP Basic。 – Dieter 2012-04-02 17:54:15

回答

0

那么这个哈希密码将成为新的密码。

HTTP基本身份验证通常用作RESTful身份验证方法,但是它必须通过SSL。如果您使用加密随机数作为会话ID,则您仍需要通过SSL为所有请求传递此值,否则您将违反OWASP A9,并且所有用户都可能被入侵。

+0

所以你的意思是将它散列在前端而不是后端?因此,在前端使用sha512进行哈希处理,并将其另存为后端的“明文”(实际上是sha512哈希)? 肯定可以工作,原来的解决方案。 完全同意SSL,我是一个相当大的Owasp风扇,所以我尽我所能保证它的安全。 – Dieter 2012-04-02 17:52:54

+0

@Dieter然后,您将存储不是RESTful的每用户服务器端统计信息。如果您要打破REST安全规则而不是使用会话ID + SSL,那么您会更安全。 – rook 2012-04-02 20:14:26

+0

我在后端的数据库中存储了我需要做的事情;-)不是像API会话管理那样存储。 – Dieter 2012-04-03 06:57:58

相关问题