br / signed-request-bundle
Symfony2 Bundle,提供请求和响应签名功能
Requires
- php: >=5.3.0
- doctrine/common: 2.4.*@dev
- symfony/event-dispatcher: >=2.1, <2.4-dev
- symfony/framework-bundle: >=2.1, <2.4-dev
- symfony/http-kernel: >=2.1, <2.4-dev
- symfony/routing: >=2.1, <2.4-dev
Requires (Dev)
README
Symfony 2 bundle,提供请求和响应签名功能
简介
此bundle提供非常简单的请求签名(验证)和自动响应签名。这意味着每个请求都必须使用哈希值进行签名:
md5($requestUri . $content . $salt)
响应将使用以下方式签名:
md5($responseContent . $salt)
签名始终放置(并假定)在名为 X-SignedRequest
的头部中。
贡献总是受欢迎。
安装
只需运行,假设您已安装composer.phar或composer二进制文件(或将它添加到您的composer.json
并运行composer install)
$ composer require br/signed-request-bundle
您可以使用dev-master
,或者使用更稳定的标签(出于各种原因推荐)。在Github仓库或Packagist上,您总是可以找到最新的标签。
现在将Bundle添加到您的Kernel
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new BR\SignedRequestBundle\BRSignedRequestBundle(), // ... ); }
配置
要配置此bundle,请编辑您的config.yml
或config_{environment}.yml
# Signed Request Bundle br_signed_request: salt: SALT_HERE debug: %kernel.debug% request_listener_enabled: true # default response_listener_enabled: true # default signature_mismatch: # optional status_code: 400 response: Failed validation
如果您将监听器置于debug
模式,则请求监听器将始终通过请求,但会添加一个X-SignedRequest-Debug
头部,该头部将包含“true”或“false”,具体取决于签名是否正确。
提供自己的签名服务
您可以通过标记服务为br_signed_request.signing_service
并实现Service\SigningServiceInterface
来提供自己的签名服务。然后,bundle将调用您服务的相应函数。您可以通过查看默认服务(仅使用MD5)的设置来了解如何设置。
使用签名请求/响应注解
您也可以在单个控制器函数上添加注解来代替检查每个请求的签名。为了使用该注解,您必须将request_listener_enabled
设置为false
。对于签名响应也是如此。如果您禁用response_listener_enabled
,则可以使用注解指定应签名的控制器操作。当然,您也可以结合使用这两个注解。
示例
<?php namespace Acme\YourBundle\Controller; use BR\SignedRequestBundle\Annotations\SignedRequest; use BR\SignedRequestBundle\Annotations\SignedResponse; ... /** * @SignedRequest */ public function fooAction() { ... } /** * @SignedResponse */ public function barAction() { ... } /** * @SignedRequest * @SignedResponse */ public function bazAction() { ... } ...
待办事项与未来计划
目前没有。提出问题或提交PR :)