php - 无需用户身份验证的开发环境的 Symfony http 基本身份验证

标签 php symfony security authentication basic-authentication

我有一个常用的 Symfony 应用程序,包括防火墙、用户提供程序和通过表单登录 (FOSUserBundle)、自定义 token 身份验证(对于应用程序),甚至是应用程序一部分的 http 基本身份验证。当然一次只使用其中一个。特定区域由连接到这些提供商的不同防火墙保护。

security.yml 的摘录

security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        authentication_provider:
            entity:
                class: MyAppBundle:User
                property: apiKey
        fos_userbundle:
            id: fos_user.user_provider.username

...

通常在实时系统上没有app_dev.php,因为这是一个巨大的安全漏洞。但如果需要,它也是在实时系统上进行调试的好方法。我的想法是通过额外的 http 基本身份验证来保护开发环境。这样开发环境仍然是安全的,但您可以在需要时访问它。

但不幸的是我无法让它工作,因为一旦您将 http 基本身份验证添加到一般站点并登录,您的用户就通过了 Symfony 应用程序的身份验证。这当然是首先进行身份验证的漏洞点,但是这个想法的交易破坏者因为应用程序无法区分表单登录用户和基本身份验证用户(我知道我可以区分用户类型但是这将是一个额外的复杂层,我不愿意添加,因为它必须在孔应用程序中进行检查。

我的问题是是否可以在没有身份验证部分的情况下拥有 Symfony native http 基本身份验证。因此,在完成基本身份验证后,浏览器仍在发送 http 基本身份验证,但您仍然是匿名的,并且仍然必须通过表单(例如)登录以进行身份​​验证并可以访问其他受限内容。

编辑:我知道有一些方法可以像在 Apache 中一样在 Symfony 之外的服务器配置中进行配置,但我正在寻找 Symfony 解决方案(无需托管更改即可工作,包括本地,可以推送到源代码管理, ...)

编辑 2:经过深入研究后,我发现所有身份验证过程都必须返回某种 token 。因此,它可能不像覆盖提供者并返回 Anonymus token 那么简单。

最佳答案

配置方法如下:

security:
    providers:
        api_users_in_memory:
           memory:
              users:
                  test:
                      password: qwerty
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
    firewalls:
        api:
          pattern: ^/api
          stateless: true
          http_basic:
            provider: api_users_in_memory

关于php - 无需用户身份验证的开发环境的 Symfony http 基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166729/

相关文章:

twig 模板布局中的 javascript 产生错误

php - Silex 异常处理程序

PHP 表单引用安全

php - 如何在 zend 框架 2 中创建工厂?

php - 查询未在 php 中运行

php - 与 Symfony2.4 相比,Symfony2.5 的初始化时间较慢

javascript - JSON 安全最佳实践?

php - 如何在无脂框架中的 SQL-Mapper 中传递日期函数?

javascript - 如何在不包含额外内容的情况下获取返回数据的值

android - 如何安全归零并释放 Android 应用程序使用的所有内存页面?