我正在使用 FOSUserBundle 配置 Symfony2 应用程序以使用http_digest
身份验证。这是 Symfony 2.1.0-BETA2。
在 security.yml 中,我只是简单地切换并添加所需的http_basic
属性。其他一切都保持不变。http_digest
key
有效的相关配置:
firewalls:
main:
pattern: ^/
anonymous: ~
form_login: false
provider: fos_user_bundle
http_basic:
realm: "Example Realm"
不起作用的相关配置:
firewalls:
main:
pattern: ^/
anonymous: ~
form_login: false
provider: fos_user_bundle
http_digest:
realm: "Example Realm"
key: "%secret%"
如您所见,唯一的区别是切换http_basic
到http_digest
. 更改key
属性的值似乎没有任何区别。
使用 in_memory 提供程序时,http_digest
工作得很好。此问题仅在使用fos_user_bundle
提供程序时出现。
通过工作,我的意思是在使用时http_basic
,有效的用户凭据被接受。当使用http_digest
相同的有效用户详细信息时,不接受并重新显示浏览器默认的 http 身份验证提示。
在安全配置更改之间,我清除了 dev 和 prod 缓存,清空浏览器缓存并关闭浏览器。
配置中是否缺少一些关键的东西?
更新
我记录了一次成功的 http_basic 尝试和一次不成功的 http_digest 尝试,并对日志进行了比较。
两个日志都是相同的,包括 Doctrine 记录用于身份验证的 SQL 查询的位置。
在 http_digest 日志中的身份验证查询之后是以下行:
security.DEBUG: Expected response: '3460e5c31b09d4e8872650838a0c0f1a' but received: '5debe5d0028f65ae292ffdea2616ac19'; is AuthenticationDao returning clear text passwords? [] []
security.INFO: exception 'Symfony\Component\Security\Core\Exception\BadCredentialsException' with message 'Incorrect response' in /home/jon/www/local.app.simplytestable.com/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php:105
使用 FOSUserBundle 的密码被加盐和散列。
我想确定这件事是由于我的配置错误还是 FOSUserBundle 中的错误引起的。