我有一个常用的 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/