flying / debug-bundle
Symfony 2 扩展包,提供多个工具,使使用 Symfony 2 应用程序的调试器更方便
Requires (Dev)
- symfony/config: ~2.2
- symfony/dependency-injection: ~2.2
- symfony/form: ~2.2
- symfony/http-kernel: ~2.2
- symfony/security: ~2.2
- symfony/security-bundle: ~2.2
README
此包提供了一些服务,旨在通过在调试器下模拟某些安全相关功能来简化开发 Symfony 2 应用程序的过程
调试器检测
调试器检测由 DebuggerDetectorListener
处理,目前识别 Xdebug 和 Zend Debugger。
如果某些服务需要知道请求是否在调试器下运行,则应实现 DebuggerStatusSubscriberInterface
以在确定状态时获取请求状态。
CSRF令牌验证模拟
当调试表单提交时,在启用 CSRF 验证的情况下禁用调试器下的 CSRF 令牌验证可能很有用。
CSRF令牌验证模拟由配置控制
debug: csrf: # true to enable CSRF token validation emulation, false to disable it completely enabled: true # true to allow use of CSRF token validation emulation permanently, # false to enable it only when running under debugger permanent: false # Status of emulated CSRF token validation token_validation_status: true
除非永久启用,否则验证模拟在生产环境中会自动禁用,也可以在开发环境中禁用。启用时,如果请求在调试器下运行,则将替换为配置的值。除非通过启用 permanent
配置选项强制使用模拟,否则将所有 CSRF 验证传递给真实的 CSRF 令牌管理器。
调试认证提供者
调试认证提供者可用于透明地认证需要用于调试/开发目的的用户。例如,调试位于应用程序安全区域内的某些请求,而无需始终修改应用程序的配置(慢、无聊且易出错)。
在使用此功能之前,建议阅读Symfony 书籍中关于安全性的章节和Symfony Cookbook中关于自定义认证提供者的配方。
安装
要使用调试认证提供者,您需要对您的代码和配置进行一些更改。
1. 创建您自己的令牌生成器
安全令牌是 Symfony 中安全性的关键组件,您可以在此处了解更多信息。大多数与创建自定义认证提供者相关的任务都由此包处理,但由于令牌对每个特定应用程序来说都非常具体,因此生成令牌是您的任务。幸运的是,这非常简单。令牌生成器应实现 TokenBuilderInterface
,但在大多数情况下,您也可以使用 AbstractTokenBuilder
作为基础。您需要实现 build()
方法,该方法接收 Request
对象并需要创建并返回所需的安全令牌,适用于您的应用程序。最简单的实现可能如下所示
public function build(Request $request) { // More about token configuration later $config = $this->getTokenConfig(); $token = new UsernamePasswordToken($config['username'], '', 'debug', $config['roles']); return $token; }
然而,实际的实现可能涉及从数据库或其他地方接收用户对象。如果您在应用程序中使用FOSUserBundle,您可能会发现将他们的 UserManager
注入到类中并从中获取用户很有用。
令牌生成器可以用作简单的类,但最好将其注册为服务,尤其是如果您的令牌构建逻辑依赖于其他服务的信息。
2. 注册调试认证提供者
在实现令牌构建器之后,您需要将调试认证提供者注册到您的安全配置中。注册说明请参阅此处,其形式可能如下所示
security: firewalls: main: pattern: ^/ debug: token_builder: my.token_builder.service.id # Rest of your firewall definition
注册调试认证提供者非常重要,必须在您应用中使用的真实认证提供者之前进行,这样它才能提供您生成的调试安全令牌,并禁用其他安全机制。
3. 配置调试认证提供者
调试认证提供者具有以下配置选项
token_builder
- 您令牌构建器的服务ID或类名。此选项是必需的。token_config
- 传递给您的令牌构建器的任意配置信息。它将通过setTokenConfig
方法直接传递给您的令牌构建器。例如,您可以传递您想要认证的用户名。enabled
- 允许您完全禁用或强制此功能而无需任何其他更改。默认情况下,在调试环境中启用。permanent
- 设置为true
以在请求不在调试器下运行时也启用用户认证替换。在开发过程中可能很有用,如果您不想总是进行身份验证。默认为false
,意味着调试认证提供者仅在请求在调试器下运行时激活。auth_provider
和auth_listener
选项分别定义认证提供者和监听器的服务,通常不应更改。