diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index 55746215c1..ae4a9da200 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -601,7 +601,8 @@ UPGRADE FROM 2.x to 3.0 * The `Resources/` directory was moved to `Core/Resources/` - * The `key` settings of `anonymous` and `remember_me` are renamed to `secret`. + * The `key` settings of `anonymous`, `remember_me` and `http_digest` are + renamed to `secret`. Before: @@ -614,6 +615,8 @@ UPGRADE FROM 2.x to 3.0 anonymous: { key: "%secret%" } remember_me: key: "%secret%" + http_digest: + key: "%secret%" ``` ```xml @@ -626,6 +629,7 @@ UPGRADE FROM 2.x to 3.0 + ``` @@ -638,6 +642,7 @@ UPGRADE FROM 2.x to 3.0 // ... 'anonymous' => array('key' => '%secret%'), 'remember_me' => array('key' => '%secret%'), + 'http_digest' => array('key' => '%secret%'), ), )); ``` @@ -653,6 +658,8 @@ UPGRADE FROM 2.x to 3.0 anonymous: { secret: "%secret%" } remember_me: secret: "%secret%" + http_digest: + secret: "%secret%" ``` ```xml @@ -665,6 +672,7 @@ UPGRADE FROM 2.x to 3.0 + ``` @@ -677,6 +685,7 @@ UPGRADE FROM 2.x to 3.0 // ... 'anonymous' => array('secret' => '%secret%'), 'remember_me' => array('secret' => '%secret%'), + 'http_digest' => array('secret' => '%secret%'), ), )); ``` diff --git a/src/Symfony/Bundle/SecurityBundle/CHANGELOG.md b/src/Symfony/Bundle/SecurityBundle/CHANGELOG.md index 1508f58c64..21083ddbc9 100644 --- a/src/Symfony/Bundle/SecurityBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/SecurityBundle/CHANGELOG.md @@ -4,8 +4,8 @@ CHANGELOG 2.8.0 ----- - * deprecated the `key` setting of `anonymous` and `remember_me` in favor of the - `secret` setting. + * deprecated the `key` setting of `anonymous`, `remember_me` and `http_digest` + in favor of the `secret` setting. 2.6.0 ----- diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php index 691714fa31..63875f8308 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php @@ -58,10 +58,26 @@ class HttpDigestFactory implements SecurityFactoryInterface public function addConfiguration(NodeDefinition $node) { $node + ->beforeNormalization() + ->ifTrue(function ($v) { return isset($v['key']); }) + ->then(function ($v) { + if (isset($v['secret'])) { + throw new \LogicException('Cannot set both key and secret options for http_digest, use only secret instead.'); + } + + @trigger_error('http_digest.key is deprecated since version 2.8 and will be removed in 3.0. Use http_digest.secret instead.', E_USER_DEPRECATED); + + $v['secret'] = $v['key']; + + unset($v['key']); + + return $v; + }) + ->end() ->children() ->scalarNode('provider')->end() ->scalarNode('realm')->defaultValue('Secured Area')->end() - ->scalarNode('key')->isRequired()->cannotBeEmpty()->end() + ->scalarNode('secret')->isRequired()->cannotBeEmpty()->end() ->end() ; } @@ -76,7 +92,7 @@ class HttpDigestFactory implements SecurityFactoryInterface $container ->setDefinition($entryPointId, new DefinitionDecorator('security.authentication.digest_entry_point')) ->addArgument($config['realm']) - ->addArgument($config['key']) + ->addArgument($config['secret']) ; return $entryPointId; diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php index 4789a6d3ab..fc9b07c4f1 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php @@ -64,7 +64,7 @@ $container->loadFromExtension('security', array( 'simple' => array('pattern' => '/login', 'security' => false), 'secure' => array('stateless' => true, 'http_basic' => true, - 'http_digest' => array('key' => 'TheKey'), + 'http_digest' => array('secret' => 'TheSecret'), 'form_login' => true, 'anonymous' => true, 'switch_user' => true, diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml index 61873a9f51..1916755102 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml @@ -49,7 +49,7 @@ - + diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml index e14e793176..e8ed61ef03 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml @@ -47,7 +47,7 @@ security: stateless: true http_basic: true http_digest: - key: TheKey + secret: TheSecret form_login: true anonymous: true switch_user: true diff --git a/src/Symfony/Component/Security/CHANGELOG.md b/src/Symfony/Component/Security/CHANGELOG.md index 15d8d6f9b7..84fe742b72 100644 --- a/src/Symfony/Component/Security/CHANGELOG.md +++ b/src/Symfony/Component/Security/CHANGELOG.md @@ -4,8 +4,8 @@ CHANGELOG 2.8.0 ----- - * deprecated `getKey()` of the `AnonymousToken`, `RememberMeToken` and `AbstractRememberMeServices` classes - in favor of `getSecret()`. + * deprecated `getKey()` of the `AnonymousToken`, `RememberMeToken`, + `AbstractRememberMeServices` and `DigestAuthenticationEntryPoint` classes in favor of `getSecret()`. * deprecated `Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface`, use `Symfony\Component\Security\Http\Authentication\SimplePreAuthenticatorInterface` instead * deprecated `Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface`, use diff --git a/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/AnonymousAuthenticationProviderTest.php b/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/AnonymousAuthenticationProviderTest.php index 5b7174745e..8f4b39278a 100644 --- a/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/AnonymousAuthenticationProviderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/AnonymousAuthenticationProviderTest.php @@ -33,7 +33,7 @@ class AnonymousAuthenticationProviderTest extends \PHPUnit_Framework_TestCase /** * @expectedException \Symfony\Component\Security\Core\Exception\BadCredentialsException */ - public function testAuthenticateWhenKeyIsNotValid() + public function testAuthenticateWhenSecretIsNotValid() { $provider = $this->getProvider('foo'); @@ -48,19 +48,19 @@ class AnonymousAuthenticationProviderTest extends \PHPUnit_Framework_TestCase $this->assertSame($token, $provider->authenticate($token)); } - protected function getSupportedToken($key) + protected function getSupportedToken($secret) { $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken', array('getSecret'), array(), '', false); $token->expects($this->any()) ->method('getSecret') - ->will($this->returnValue($key)) + ->will($this->returnValue($secret)) ; return $token; } - protected function getProvider($key) + protected function getProvider($secret) { - return new AnonymousAuthenticationProvider($key); + return new AnonymousAuthenticationProvider($secret); } } diff --git a/src/Symfony/Component/Security/Http/EntryPoint/DigestAuthenticationEntryPoint.php b/src/Symfony/Component/Security/Http/EntryPoint/DigestAuthenticationEntryPoint.php index 89f80adf53..cdb98ebb83 100644 --- a/src/Symfony/Component/Security/Http/EntryPoint/DigestAuthenticationEntryPoint.php +++ b/src/Symfony/Component/Security/Http/EntryPoint/DigestAuthenticationEntryPoint.php @@ -24,15 +24,15 @@ use Psr\Log\LoggerInterface; */ class DigestAuthenticationEntryPoint implements AuthenticationEntryPointInterface { - private $key; + private $secret; private $realmName; private $nonceValiditySeconds; private $logger; - public function __construct($realmName, $key, $nonceValiditySeconds = 300, LoggerInterface $logger = null) + public function __construct($realmName, $secret, $nonceValiditySeconds = 300, LoggerInterface $logger = null) { $this->realmName = $realmName; - $this->key = $key; + $this->secret = $secret; $this->nonceValiditySeconds = $nonceValiditySeconds; $this->logger = $logger; } @@ -43,7 +43,7 @@ class DigestAuthenticationEntryPoint implements AuthenticationEntryPointInterfac public function start(Request $request, AuthenticationException $authException = null) { $expiryTime = microtime(true) + $this->nonceValiditySeconds * 1000; - $signatureValue = md5($expiryTime.':'.$this->key); + $signatureValue = md5($expiryTime.':'.$this->secret); $nonceValue = $expiryTime.':'.$signatureValue; $nonceValueBase64 = base64_encode($nonceValue); @@ -65,11 +65,21 @@ class DigestAuthenticationEntryPoint implements AuthenticationEntryPointInterfac } /** - * @return string + * @deprecated Since version 2.8, to be removed in 3.0. Use getSecret() instead. */ public function getKey() { - return $this->key; + @trigger_error(__method__.'() is deprecated since version 2.8 and will be removed in 3.0. Use getSecret() instead.', E_USER_DEPRECATED); + + return $this->getSecret(); + } + + /** + * @return string + */ + public function getSecret() + { + return $this->secret; } /** diff --git a/src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php index f7feee8f8e..0d60673a49 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php @@ -27,14 +27,14 @@ use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; class AnonymousAuthenticationListener implements ListenerInterface { private $tokenStorage; - private $key; + private $secret; private $authenticationManager; private $logger; - public function __construct(TokenStorageInterface $tokenStorage, $key, LoggerInterface $logger = null, AuthenticationManagerInterface $authenticationManager = null) + public function __construct(TokenStorageInterface $tokenStorage, $secret, LoggerInterface $logger = null, AuthenticationManagerInterface $authenticationManager = null) { $this->tokenStorage = $tokenStorage; - $this->key = $key; + $this->secret = $secret; $this->authenticationManager = $authenticationManager; $this->logger = $logger; } @@ -51,7 +51,7 @@ class AnonymousAuthenticationListener implements ListenerInterface } try { - $token = new AnonymousToken($this->key, 'anon.', array()); + $token = new AnonymousToken($this->secret, 'anon.', array()); if (null !== $this->authenticationManager) { $token = $this->authenticationManager->authenticate($token); } diff --git a/src/Symfony/Component/Security/Http/Tests/EntryPoint/DigestAuthenticationEntryPointTest.php b/src/Symfony/Component/Security/Http/Tests/EntryPoint/DigestAuthenticationEntryPointTest.php index 181e340e60..4082986e1c 100644 --- a/src/Symfony/Component/Security/Http/Tests/EntryPoint/DigestAuthenticationEntryPointTest.php +++ b/src/Symfony/Component/Security/Http/Tests/EntryPoint/DigestAuthenticationEntryPointTest.php @@ -23,7 +23,7 @@ class DigestAuthenticationEntryPointTest extends \PHPUnit_Framework_TestCase $authenticationException = new AuthenticationException('TheAuthenticationExceptionMessage'); - $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheKey'); + $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheSecret'); $response = $entryPoint->start($request, $authenticationException); $this->assertEquals(401, $response->getStatusCode()); @@ -34,7 +34,7 @@ class DigestAuthenticationEntryPointTest extends \PHPUnit_Framework_TestCase { $request = $this->getMock('Symfony\Component\HttpFoundation\Request'); - $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheKey'); + $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheSecret'); $response = $entryPoint->start($request); $this->assertEquals(401, $response->getStatusCode()); @@ -47,7 +47,7 @@ class DigestAuthenticationEntryPointTest extends \PHPUnit_Framework_TestCase $nonceExpiredException = new NonceExpiredException('TheNonceExpiredExceptionMessage'); - $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheKey'); + $entryPoint = new DigestAuthenticationEntryPoint('TheRealmName', 'TheSecret'); $response = $entryPoint->start($request, $nonceExpiredException); $this->assertEquals(401, $response->getStatusCode());