Commit Graph

3716 Commits

Author SHA1 Message Date
Marcin Michalski
23fa42267e [Security] Add missing polish translations 2020-10-25 11:48:26 +01:00
Fabien Potencier
fc615e9845 feature #38664 [RateLimiter] Moved classes implementing LimiterInterface to a new namespace (Nyholm)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[RateLimiter] Moved classes implementing LimiterInterface to a new namespace

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no?
| Tickets       |
| License       | MIT
| Doc PR        |

Before we release the RateLimit component.
I think it would be a good idea to put the 7 classes that belongs to a specific strategy in their own "Policy" namespace. It is very likely that it will be more strategies in the future and the `Symfony\Component\RateLimiter` namespace is crowed as it is.

I decided not to put the `CompoundLimiter` in this namespace as it is not a strategy.

Commits
-------

1e6cea56e4 [RateLimiter] Moved classes implementing LimiterInterface to a new namespace
2020-10-25 09:35:39 +01:00
Nyholm
1e6cea56e4 [RateLimiter] Moved classes implementing LimiterInterface to a new namespace 2020-10-25 09:35:33 +01:00
Nicolas Grekas
605a5674a8 Merge branch '5.1' into 5.x
* 5.1:
  fix merge
  fix merge
  Remove branch-version (keep them for contracts only)
  [HttpClient] relax auth bearer format requirements
  [PHPUnitBridge] Silence errors from mkdir()
  [DependencyInjection] Preload classes with union types correctly.
  [Serializer] fix decoding float XML attributes starting with 0
  add missing dutch translations
  [TwigBridge] Remove "transchoice" from the code base
  Support PHPUnit 8 and PHPUnit 9 in constraint compatibility trait
  Add expectDeprecation, expectNotice, expectWarning, and expectError to TestCase polyfill
  [String] fix before/after[Last]() returning the empty string instead of the original one on non-match
  Add missing exporter function for PHPUnit 7
  [Validator] Add missing romanian translations
  [String] fix slicing in UnicodeString
  [Cache] Use correct expiry in ChainAdapter
  do not translate null placeholders or titles
2020-10-24 14:08:07 +02:00
Nicolas Grekas
65f2620bc4 Merge branch '4.4' into 5.1
* 4.4:
  fix merge
  Remove branch-version (keep them for contracts only)
  [HttpClient] relax auth bearer format requirements
  [PHPUnitBridge] Silence errors from mkdir()
  [DependencyInjection] Preload classes with union types correctly.
  [Serializer] fix decoding float XML attributes starting with 0
  add missing dutch translations
  Support PHPUnit 8 and PHPUnit 9 in constraint compatibility trait
  Add expectDeprecation, expectNotice, expectWarning, and expectError to TestCase polyfill
  Add missing exporter function for PHPUnit 7
  [Validator] Add missing romanian translations
  [Cache] Use correct expiry in ChainAdapter
  do not translate null placeholders or titles
2020-10-24 14:01:57 +02:00
Nicolas Grekas
77aa17401d Merge branch '3.4' into 4.4
* 3.4:
  Remove branch-version (keep them for contracts only)
  [Serializer] fix decoding float XML attributes starting with 0
  add missing dutch translations
  [Validator] Add missing romanian translations
  do not translate null placeholders or titles
2020-10-24 13:50:19 +02:00
Nicolas Grekas
f8fe4bf9f5 Remove branch-version (keep them for contracts only) 2020-10-24 12:57:07 +02:00
Nyholm
8be261b300 [RateLimiter] Rename RateLimiter to RateLimiterFactory 2020-10-24 10:10:52 +02:00
Wouter de Jong
cd34f21254 [RateLimiter] Added reserve() to LimiterInterface and rename Limiter to RateLimiter 2020-10-16 07:10:27 +02:00
Wouter de Jong
04ef565895 [Security][Notifier] Added integration of Login Link with the Notifier component 2020-10-14 20:49:27 +02:00
Wouter de Jong
5093e0df06 [Security] Added check_post_only to the login link authenticator 2020-10-13 19:07:29 +02:00
Nicolas Grekas
01b064d97a Merge branch '5.1' into 5.x
* 5.1:
  Fix branch-version
2020-10-13 15:22:54 +02:00
Nicolas Grekas
1a0ea4d2f7 Merge branch '4.4' into 5.1
* 4.4:
  Fix branch-version
2020-10-13 15:21:37 +02:00
Nicolas Grekas
58f803f356 Merge branch '3.4' into 4.4
* 3.4:
  Fix branch-version
2020-10-13 15:20:53 +02:00
Nicolas Grekas
44a7e3e920 Fix branch-version 2020-10-13 15:20:16 +02:00
Nicolas Grekas
7f0015ee35 Merge branch '5.1' into 5.x
* 5.1:
  Remove "version" from composer.json files, use "branch-version" instead
  [String] fix "is too large" ValueError on PHP 8
2020-10-13 14:43:06 +02:00
Nicolas Grekas
23ab908213 Merge branch '4.4' into 5.1
* 4.4:
  Remove "version" from composer.json files, use "branch-version" instead
2020-10-13 14:35:38 +02:00
Nicolas Grekas
e953dd3e0d Merge branch '3.4' into 4.4
* 3.4:
  Remove "version" from composer.json files, use "branch-version" instead
2020-10-13 14:30:56 +02:00
Nicolas Grekas
f9ed6940fd Remove "version" from composer.json files, use "branch-version" instead 2020-10-13 14:21:16 +02:00
Fabien Potencier
87920d266e feature #38499 [Validator] Upgraded constraints to enable named arguments and attributes (derrabus)
This PR was squashed before being merged into the 5.x branch.

Discussion
----------

[Validator] Upgraded constraints to enable named arguments and attributes

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #38096
| License       | MIT
| Doc PR        | TODO with symfony/symfony-docs#14305

This PR enables all remaining atomic (!= composite) constraints to be used as attributes.

The only exception is `UniqueEntity` from Doctrine bridge because we don't have a Doctrine ORM release yet that supports PHP 8. So I could migrate that one as well, but I cannot really test it.

Commits
-------

fb99eb2052 [Validator] Upgraded constraints to enable named arguments and attributes
2020-10-11 08:04:09 +02:00
Alexander M. Turek
fb99eb2052 [Validator] Upgraded constraints to enable named arguments and attributes 2020-10-11 08:04:04 +02:00
Wouter de Jong
0f947b2e84 Allow null and DateTime objects to be used as signatureProperties
Returning DateTime objects seems like a common use-case to automatically expire
all login links when one is used or to only allow the login link to be used
once.
2020-10-10 15:09:30 +02:00
Nicolas Grekas
6066462be2 Merge branch '5.1' into 5.x
* 5.1:
  Update versions in composer.json
  [Mime] Fix serialization of RawMessage
2020-10-06 17:53:16 +02:00
Nicolas Grekas
3e492d6e5d Merge branch '4.4' into 5.1
* 4.4:
  Update versions in composer.json
  [Mime] Fix serialization of RawMessage
2020-10-06 17:50:31 +02:00
Nicolas Grekas
55396f90a3 Merge branch '3.4' into 4.4
* 3.4:
  Update versions in composer.json
2020-10-06 17:45:41 +02:00
Nicolas Grekas
8f714a2fd6 Update versions in composer.json 2020-10-06 17:25:25 +02:00
Nicolas Grekas
11c4f28137 Merge branch '5.1' into 5.x
* 5.1:
  fix merge
  [appveyor] fix checking for the .x branch
  Remove "branch-alias", populate "version"
2020-10-06 14:00:29 +02:00
Nicolas Grekas
097c8c6f27 Merge branch '4.4' into 5.1
* 4.4:
  [appveyor] fix checking for the .x branch
  Remove "branch-alias", populate "version"
2020-10-06 13:49:34 +02:00
Nicolas Grekas
e553f424d0 Merge branch '3.4' into 4.4
* 3.4:
  Remove "branch-alias", populate "version"
2020-10-06 13:41:17 +02:00
Nicolas Grekas
9d40c796c4 Remove "branch-alias", populate "version" 2020-10-06 13:22:52 +02:00
Alexander M. Turek
66fbf0a671 [SecurityGuard] Implement PostAuthenticationGuardToken::getFirewallName(). 2020-10-06 11:21:13 +02:00
Fabien Potencier
f8212cc9e3 Merge branch '5.1'
* 5.1:
  Update security.he.xlf
2020-10-04 09:09:29 +02:00
Fabien Potencier
936c6afdf0 Merge branch '4.4' into 5.1
* 4.4:
  Update security.he.xlf
2020-10-04 09:09:21 +02:00
Fabien Potencier
9c1b6fc985 Merge branch '3.4' into 4.4
* 3.4:
  Update security.he.xlf
2020-10-04 09:09:09 +02:00
Fabien Potencier
62a76ba871 Merge branch '5.1'
* 5.1:
  Handle consecutive supports() calls in the RememberMeAuthenticator
2020-10-04 09:09:00 +02:00
Ben Hakim
8d4c2f052d Update security.he.xlf 2020-10-04 09:06:34 +02:00
Wouter de Jong
e0d1867b54 Handle consecutive supports() calls in the RememberMeAuthenticator 2020-10-03 15:02:03 +02:00
Fabien Potencier
534466d1cf feature #38177 [Security] Magic login link authentication (weaverryan)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Security] Magic login link authentication

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | TODO

Hi!

This adds a Slack-style "magic link" login authenticator to the new login system: (A) enter your email into a form, (B) receive an email with a link in it (C) click that link and you are authenticated!

For most users, implementing this would require:

A) Create a [controller](https://github.com/weaverryan/symfony-magic-login-link-example/blob/master/src/Controller/MagicLinkLoginController.php) with the "enter your email" form and a route for the "check" functionality (similar to `form_login`)
B) Activate in `security.yaml`:

```yml
security:
    enable_authenticator_manager: true
    # ...
    firewalls:
        # ...
        main:
            # ...
            login_link:
                check_route: 'magic_link_verify'
                # this is an important and powerful option
                # An array of properties on your User that are used to sign the link.
                # If any of these change, all existing links will become invalid
                # tl;dr If you want the modification of ANY field to invalidate ALL existing magic links immediately,
                # then you can add it to this list. You could even add a "lastLoginLinkSentAt" to invalid
                # all existing login links when a new one is sent.
                signature_properties: [id, password, email]

                # optional - by default, links can be reused but have a 10 minute lifetime
                #max_uses: 3
                #used_link_cache: cache.app
```

Done! This will generate a URL that looks something like this:

> https://127.0.0.1:9033/login/verify?user=weaverryan@gmail.com&expires=1601342578&hash=YzE1ZDJlYjM3YTMyMjgwZDdkYzg2ZjFlMjZhN2E5ZWRmMzk3NjAxNjRjYThiMjMzNmIxYzAzYzQ4NmQ2Zjk4NA%3D%3D

We would implement a Maker command this config + login/controller. The implementation is done via a "signed URL" and an optional cache pool to "expire" links. The hash of the signed URL can contain any user fields you want, which give you a powerful mechanism to invalidate magic tokens on user data changes. See `signature_properties` above.

#### Security notes:

There is a LOT of variability about how secure these need to be:

* A) Many/most implementation only allow links to be used ONE time. That is *possible* with this implementation, but is not the *default*. You CAN add a `max_uses` config which stores the expired links in a cache so they cannot be re-used. However, to make this work, you need to do more work by adding some "page" between the link the users clicks and *actually* using the login link. Why? Because unless you do this, email clients may follow the link to "preview" it and will "consume" the link.

* B) Many implementations will invalidate all other login links for a user when a new one is created. We do *not* do that, but that IS possible (and we could even generate the code for it) by adding a `lastLoginLinkSentAt` field to `User` and including this in `signature_properties`.

* C) We *do* invalidate all links if the user's email address is changed (assuming the `email` is included in `signature_properties`, which it should be). You can also invalidate on password change or whatever you want.

* D) Some implementations add a "state" so that you can only use the link on the same device that created it. That is, in many cases, quite annoying. We do not currently support that, but we could in the future (and the user could add it themselves).

Thanks!

#### TODOS:

* [x] A) more tests: functional (?) traits
* [ ] B) documentation
* [ ] C) MakerBundle PR
* [ ] D) Make sure we have what we need to allow that "in between" page
* [ ] E) Create a new cache pool instead of relying on cache.app?

Commits
-------

a8afe109d8 [Security] Magic login link authentication
2020-10-03 08:23:42 +02:00
Ryan Weaver
a8afe109d8 [Security] Magic login link authentication 2020-10-03 08:23:35 +02:00
Yonel Ceruto
3d83f94a89 Fixed undefined property in Firewall\ExceptionListener 2020-10-02 17:21:50 -04:00
Thomas Calvet
1a801e8452 [4.4] Ignore more deprecations for Mockery mocks 2020-10-02 09:34:48 +02:00
Wouter de Jong
5d03afea99 Added request rate limiters and improved login throttling
This allows limiting on different elements of a request. This is usefull to
e.g. prevent breadth-first attacks, by allowing to enforce a limit on both IP
and IP+username.
2020-09-30 21:18:40 +02:00
Fabien Potencier
aa661492d2 feature #38257 [RateLimiter] Add limit object on RateLimiter consume method (Valentin, vasilvestre)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[RateLimiter] Add limit object on RateLimiter consume method

| Q             | A
| ------------- | ---
| Branch?       | master (should be merged in 5.2 before 31 September if possible)
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #38241
| License       | MIT
| Doc PR        | Not yet :/ <!-- https://github.com/symfony/symfony-docs/pull/X -->

Commits
-------

8f62afc5f9 [RateLimiter] Return Limit object on Consume method
2020-09-30 07:47:32 +02:00
Valentin
8f62afc5f9 [RateLimiter] Return Limit object on Consume method 2020-09-30 07:47:20 +02:00
Alexander M. Turek
d1cb2d6354 [Validator] Constraints as php 8 Attributes. 2020-09-30 00:43:35 +02:00
Christian Flothmann
ccecffeff6 Merge branch '5.1' into master
* 5.1: (25 commits)
  stop using the deprecated at() PHPUnit matcher
  fix lowest allowed version of the HTTP client contracts
  fix lowest allowed version for the PHPUnit bridge
  fix merge
  fix merge
  drop logger mock in favor of using the BufferingLogger
  catch ValueError thrown on PHP 8
  [Yaml Parser] Fix edge cases when parsing multiple documents
  fix parsing comments not prefixed by a space
  [Translator] Make sure a null locale is handled properly
  deal with errors being thrown on PHP 8
  loadRoutes shoud receive RoutingPhpFileLoader
  [Cache] Allow cache tags to be objects implementing __toString()
  [HttpKernel] Do not override max_redirects option in HttpClientKernel
  Log notice when no entry point is configured
  remove superfluous cast
  [HttpClient] Support for CURLOPT_LOCALPORT.
  Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
  Fixed exception message formatting
  [FrameworkBundle] Fix error in xsd which prevent to register more than one metadata
  ...
2020-09-20 09:20:17 +02:00
Wouter de Jong
68f891ff65 Log notice when no entry point is configured 2020-09-17 11:39:20 +02:00
Wouter de Jong
afdd805b1c [Security] Added login throttling feature 2020-09-17 07:36:46 +02:00
Jérôme Vasseur
20f316906e [RFC][HttpKernel][Security] Allowed adding attributes on controller arguments that will be passed to argument resolvers. 2020-09-12 10:22:10 +02:00
Nicolas Grekas
d96c7a0f40 Merge branch '5.1'
* 5.1:
  [Debug] fix test
  consistently use same types for strict comparisons
  [PhpUnitBridge] Skip internal classes in CoverageListenerTrait
  [VarExporter] unserialize() might throw an Exception on php 8.
  [SecurityHttp] Don't call createMock() with multiple interfaces.
  [ErrorHandler] Parse "x not found" errors correctly on php 8.
  Prevent parsing invalid octal digits as octal numbers
  remove unnecessary check for  existing request
  [DI] fix ContainerBuilder on PHP8
  [Console] Make sure $maxAttempts is an int or null.
  [VarDumper] Fix caster for invalid SplFileInfo objects on php 8.
  [Intl] Skip test cases that produce a TypeError on php 8.
  [PhpUnitBridge] Adjust output parsing for PHPUnit 9.3.
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  add bosnian (bs) translation
  [Debug] Parse "x not found" errors correctly on php 8.
2020-09-08 16:20:09 +02:00
Alexander M. Turek
028ec0cf68 [SecurityHttp] Don't call createMock() with multiple interfaces. 2020-09-07 21:55:33 +02:00
dFayet
c1e3703efd Create impersonation_exit_path() and *_url() functions 2020-09-06 10:51:53 +02:00
Malte Schlüter
b50fc19af0 Add tests for translated error messages of json authentication 2020-09-03 13:33:24 +02:00
Malte Schlüter
7684663818 Translate failure messages of json authentication 2020-09-03 09:35:53 +02:00
Nicolas Grekas
4ee85e8e3b Merge branch '5.1'
* 5.1:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
  Fix CS
  Add a warning comment on ldap empty password
  Bump Symfony version to 4.4.14
  Update VERSION for 4.4.13
  Update CHANGELOG for 4.4.13
  [PhpunitBridge] Fix deprecation type detection
2020-09-02 18:27:44 +02:00
Nicolas Grekas
034602699e Merge branch '4.4' into 5.1
* 4.4:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
2020-09-02 18:23:27 +02:00
Nicolas Grekas
6c2a1c9a57 Merge branch '3.4' into 4.4
* 3.4:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
2020-09-02 18:08:58 +02:00
Nicolas Grekas
4351a70637 Enable "native_constant_invocation" CS rule 2020-09-02 18:06:40 +02:00
Robin Chalas
46ce480801 [Security] Add some missing CHANGELOG entries 2020-09-02 17:49:20 +02:00
Fabien Potencier
afdb97e864 feature #37337 [Security] Configurable execution order for firewall listeners (scheb)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Configurable execution order for firewall listeners

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | n/a

Hello there, I'm the author of `scheb/two-factor-bundle`, which extends Symfony's security layer with two-factor authentication. I've been closely following the recent changes by @wouterj to rework the security layer with "authenticators" (great work!). While I managed to make my bundle work with authenticators, I see some limitations in the security layer that I'd like to address to make such extensions easier to implement.

In #37336 I've submitted a draft to let security factories add their own authentication listeners to the firewall. This PR is intended to address the issue of execution order. If you look at the `Firewall` class

f64f59a9c0/src/Symfony/Component/Security/Http/Firewall.php (L62-L82)

authentication listeners are executed in the order of their creation. Additionally, there's hardcoded logic to execute `Symfony\Component\Security\Http\Firewall\AccessListener` always last and the logout listener second to last. I'd like to have a more flexible approach, to remove the hardcoded order and give authentication listeners the ability to determine their execution order.

I've added an optional interface to provide a priority to sort all registered authenitication listeners. Sorting is done in a compiler pass, so no time is wasted at runtime.

This is a draft, so I'd like to hear your opinion on this :)

Commits
-------

91388e871b Add ability to prioritize firewall listeners
2020-09-02 13:06:53 +02:00
Wouter de Jong
176aef63d9 Also mark the authenticator security system experimental in 5.2 2020-08-28 10:27:42 +02:00
Wouter de Jong
907ef311bf Lazily load the user during the check passport event 2020-08-27 16:28:46 +02:00
Fabien Potencier
6d521d4072 feature #37942 [Security] Renamed provider key to firewall name (wouterj)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Renamed provider key to firewall name

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | Fix #15207
| License       | MIT
| Doc PR        | tbd

This fixes the `$providerKey` argument names on the classes that will remain in use, even when the new Security system will take over. @fabpot do you think these changes are worth it?

Officially, all token classes are not marked as `@final`. Do I need to take into account when someone is overriding the `getProviderKey()` method? Also, I couldn't find a way to trigger a deprecation notice for deprecated properties, is this a problem?

Commits
-------

91b276326d Renamed $providerKey to $firewallName
2020-08-26 17:45:58 +02:00
Wouter de Jong
91b276326d Renamed $providerKey to $firewallName 2020-08-26 17:34:05 +02:00
Fabien Potencier
27bb2828e3 Merge branch '5.1'
* 5.1:
  Backport: Improve link script with rollback when using symlink
  fix more numeric cases changing in PHP 8
  Fixed autoLogin() returning null
  [Notifier] add doc for free mobile dsn
2020-08-26 10:31:06 +02:00
Wouter de Jong
93aea910d9 Fixed autoLogin() returning null 2020-08-25 17:26:05 +02:00
Yannick Ihmels
d23434bc23 [Security] Pass Passport to LoginFailureEvent 2020-08-22 19:11:43 +02:00
Maxime Steinhausser
e04386c187 [Security] Fix tests 2020-08-19 14:13:04 +02:00
Fabien Potencier
fbcdbf99a4 Merge branch '5.1'
* 5.1:
  fix: clarify parameter name to comply with deprecations from #34074
  [Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport
  mark the AssertingContextualValidator class as internal
  Fix the parameter names in the SecurityFactoryInterface::create() method
  [Serializer][ClassDiscriminatorMapping] Fix getMappedObjectType() when a discriminator child extends another one
  make return type correct
2020-08-18 13:41:45 +02:00
Dennis Langen
91249ed0bf fix: clarify parameter name to comply with deprecations from #34074 2020-08-18 13:34:54 +02:00
Fabien Potencier
830cc5b3a3 Merge branch '5.1'
* 5.1:
  Remove obsolete file
  Add missing license
2020-08-18 09:41:46 +02:00
Fabien Potencier
8b78ad3a72 Add missing license 2020-08-18 09:39:30 +02:00
Mbechezi Nawo
e4a14ac89d Verifying if the password field is null 2020-08-18 08:32:19 +02:00
Wouter de Jong
98802e58d3 Use PUBLIC_ACCESS from AuthenticatedVoter 2020-08-17 21:10:31 +02:00
Fabien Potencier
5d15ce4e65 Merge branch '5.1'
* 5.1:
  stop using deprecated PHPUnit APIs
2020-08-17 12:01:44 +02:00
Fabien Potencier
38e5a15ff4 Merge branch '4.4' into 5.1
* 4.4:
  stop using deprecated PHPUnit APIs
2020-08-17 12:01:29 +02:00
Christian Flothmann
3d209c46e4 stop using deprecated PHPUnit APIs 2020-08-17 11:35:39 +02:00
Fabien Potencier
a36f34f0fb Fix CS 2020-08-17 09:48:54 +02:00
Wouter de Jong
f17746c7c0 [Security] Add missing NullToken vote 2020-08-16 07:27:34 +02:00
Christian Scheb
91388e871b Add ability to prioritize firewall listeners 2020-08-13 16:50:09 +02:00
Fabien Potencier
f58b50c336 Merge branch '5.1'
* 5.1:
  Postpone BC layer removal to 6.0.
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:19:50 +02:00
Fabien Potencier
cb92a3c8c1 Merge branch '4.4' into 5.1
* 4.4:
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:19:42 +02:00
Fabien Potencier
544d276cba Merge branch '3.4' into 4.4
* 3.4:
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:18:44 +02:00
Fabien Potencier
31c194f7de feature #37359 [Security] Add event to inspect authenticated token before it becomes effective (scheb)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Security] Add event to inspect authenticated token before it becomes effective

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | n/a

Hello there, I'm the author of `scheb/two-factor-bundle`, which extends Symfony's security layer with two-factor authentication. I've been closely following the recent changes by @wouterj to rework the security layer with "authenticators" (great work!). While I managed to make my bundle work with authenticators, I see some limitations in the security layer that I'd like to address to make such extensions easier to implement.

This PR adds a new event, which is disapatched right after the authenticated token has been created by the authenticator, to "announce" it to the application *before* it becomes effective to the security system. The event works similar to `ResponseEvent`, but for security token. It allows listeners to inspect the new token before it becomes effective and - most importantly - apply modifications to it. So components other than the authenticator will be able to influence how the security token looks like, that will be set to the security layer on successful authentication.

Why would you want to do this? Of course I'm looking at this from the 2fa perspective. To make 2fa work, it's necessary to prevent a newly created authenticated token from becoming visible to the security system and therefore exposing its privileges/roles. This is done by replacing the authenticated token with a temporary "TwoFactorToken". Currently I'm doing this through dependency injection, getting all the registered authenticators and decorating them with my own token-exchange logic. This is not very clean and overly complicated, but it works. Adding this event as a hook-in point would allow for a much cleaner integration for any component that wants to have a saying in how the security token should look like.

Commits
-------

20309646b7 [Security] Add event to inspect authenticated token before it becomes effective
2020-08-12 18:06:37 +02:00
Christian Scheb
20309646b7 [Security] Add event to inspect authenticated token before it becomes effective 2020-08-12 18:06:29 +02:00
Christian Flothmann
850389731c stop using the deprecated at() PHPUnit matcher 2020-08-12 16:55:37 +02:00
Fabien Potencier
b912af9261 Merge branch '5.1'
* 5.1:
  Fix typo
  Fix deprecated libxml_disable_entity_loader
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  Remove outdated references from base_js.html.twig file
  [String] We cannot have a "provides" function in test cases.
  Typo: somes styles fixed
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 10:10:48 +02:00
Fabien Potencier
c44c606b11 Merge branch '4.4' into 5.1
* 4.4:
  Fix typo
  Fix deprecated libxml_disable_entity_loader
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 10:03:57 +02:00
Fabien Potencier
3a04739a83 Merge branch '3.4' into 4.4
* 3.4:
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 09:27:51 +02:00
Alexander M. Turek
4bf640543a Made reference to PHPUnit\Util\XML::loadfile php5-compatible. 2020-08-09 11:07:58 +02:00
Fabien Potencier
5c6727211d minor #37773 Modernized deprecated PHPUnit assertion calls (derrabus)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

Modernized deprecated PHPUnit assertion calls

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Part of #37564
| License       | MIT
| Doc PR        | N/A

Some assertions have been renamed in PHPUnit 9. PhpUnitBridge should already have polyfills in place for those methods, so it should be save to use them.

Commits
-------

ab417f7040 Modernized deprecated PHPUnit assertion calls
2020-08-09 10:13:56 +02:00
Alexander M. Turek
ab417f7040 Modernized deprecated PHPUnit assertion calls 2020-08-09 10:13:48 +02:00
Alexander M. Turek
8b801c1269 The PHPUnit\Util\XML class has been removed in PHPUnit 9.3. 2020-08-08 21:12:02 +02:00
Simon Heimberg
cea6ebda5b [Security] class Security implements AuthorizationCheckerInterface
The class has the method of AuthorizationCheckerInterface already.
2020-07-31 19:01:17 +02:00
Alexander M. Turek
ec525e6e04 Fix PHPUnit 8.5 deprecations. 2020-07-23 11:37:51 +02:00
Wouter de Jong
e37091541c Use NullToken while checking authorization
This allows to e.g. have some objects that can be viewed by anyone (even unauthenticated users).
2020-07-20 21:46:53 +02:00
Nicolas Grekas
c046229c9e Merge branch '5.1'
* 5.1:
  minor #37121 [Contracts] Add missing "extra.thanks" entries in composer.json (nicolas-grekas)
  [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
  fix handling null as empty data
  [Security\Http] Skip remember-me logout on empty token
  Missing return in loadValuesForChoices method
  No need to create an issue when creating a PR
  Use ">=" for the "php" requirement
  [HttpClient] Fix promise behavior in HttplugClient
  [Console] Fixes question input encoding on Windows
2020-07-06 15:25:45 +02:00
Robin Chalas
551f9418a3 [Security\Http] Skip remember-me logout on empty token 2020-07-06 12:10:25 +02:00
Alexander M. Turek
28e6f6f72c Move event alias mappings to their components. 2020-06-30 16:13:44 +02:00
Christian Flothmann
6aecad7438 Merge branch '5.1'
* 5.1:
  fix compatibility with Doctrine DBAL 3.0
  skip test if guesser is not supported
  Added missing license headers
2020-06-29 16:32:23 +02:00
Fabien Potencier
f706d6a276 minor #37445 [Security] Added missing license headers (wouterj)
This PR was merged into the 5.1 branch.

Discussion
----------

[Security] Added missing license headers

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

See 3be6ce121b

Seems like the fabbot reviews (and I) missed quite a lot of these in my big security PR.

Commits
-------

ea81b61e5f Added missing license headers
2020-06-29 10:19:14 +02:00
Wouter de Jong
ea81b61e5f Added missing license headers 2020-06-28 20:41:01 +02:00
Nicolas Grekas
75031a1230 Merge branch '5.1'
* 5.1:
  Fix test that fails on old distros
  Fix: compatibility with phpunit 9.3
  [DoctrineBridge] work around Connection::ping() deprecation
  [MimeType] Duplicated MimeType due to PHP Bug
  [HttpClient] fix casting TraceableResponse to php streams
  [DI] fix parsing of argument type=binary in xml
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
  Fix the 'supports' method argument type of the security voter
  Use the driverConnection executeUpdate method
2020-06-28 17:36:15 +02:00
Nicolas Grekas
4ad5079082 Merge branch '5.0' into 5.1
* 5.0:
  Fix test that fails on old distros
  Fix: compatibility with phpunit 9.3
  [DoctrineBridge] work around Connection::ping() deprecation
  [MimeType] Duplicated MimeType due to PHP Bug
  [DI] fix parsing of argument type=binary in xml
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
  Fix the 'supports' method argument type of the security voter
  Use the driverConnection executeUpdate method
2020-06-28 17:32:35 +02:00
François Pluchino
b8192eecab Fix the 'supports' method argument type of the security voter 2020-06-25 11:01:55 +02:00
Fabien Potencier
9cff4e1188 Add missing CHANGELOG 2020-06-21 19:32:04 +02:00
Fabien Potencier
3267e8e66f feature #37318 [Security] Add attributes on Passport (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Add attributes on Passport

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | not yet

see https://github.com/symfonycorp/connect/pull/95
/cc @wouterj

Commits
-------

440ada3c5f [Security] Add attributes on Passport
2020-06-20 17:04:28 +02:00
Fabien Potencier
440ada3c5f [Security] Add attributes on Passport 2020-06-20 09:18:00 +02:00
Nicolas Grekas
092632dc14 Merge branch '5.1'
* 5.1: (28 commits)
  [DI] fix
  Use "composer/package-versions-deprecated" when possible
  Fix
  Small update in our internal terminology
  Fix support for PHP8 union types
  [VarDumper] fix typo
  [Lock][Messenger] Fix precedence of DSN options for 5.1
  Fix support for PHP8 union types
  [FrameworkBundle] preserve dots in query-string when redirecting
  [3.4] Fix support for PHP8 union types
  [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit --colors option
  [3.4] Small update in our internal terminology
  [Cache] fix compat with DBAL v3
  Remove unnecessary null check
  [HttpFoundation] Allow `null` in InputBag@set
  [HttpClient] Convert CurlHttpClient::handlePush() to instance method
  Fix package rename when releasing
  bumped Symfony version to 5.1.3
  updated VERSION for 5.1.2
  updated CHANGELOG for 5.1.2
  ...
2020-06-18 21:55:03 +02:00
Christian Scheb
a74a506883 Remove unnecessary null check 2020-06-18 16:13:31 +02:00
Fabien Potencier
b04512a6fa Merge branch '5.1'
* 5.1:
  [Security] Run functional tests also for the authenticator system
  Fix register csrf protection listener
  bumped Symfony version to 5.1.2
  updated VERSION for 5.1.1
  updated CHANGELOG for 5.1.1
2020-06-13 17:58:10 +02:00
Wouter de Jong
49639caeaf [Security] Run functional tests also for the authenticator system 2020-06-13 17:06:42 +02:00
Nicolas Grekas
ec6b2801ec Merge branch '5.1'
* 5.1: (36 commits)
  Fixed left-over debug statement
  set column length for mysql 5.6 compatibility
  [Mime] Remove unused var
  [HttpClient] fix monitoring timeouts when other streams are active
  [PhpUnitBridge] fix syntax on PHP 5.3
  [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed
  properly cascade validation to child forms
  [PropertyAccess] Fix getter call order BC
  [PhpUnitBridge] fix undefined var on version 3.4
  Fix invalid char in SQS Headers
  Move ajax clear event listener initialization on loadToolbar
  [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray()
  Fix CS
  FrameworkBundle Serializer issue
  register event listeners depending on the installed packages
  take into account the context when preserving empty array objects
  Only register CSRF protection listener if CSRF is available
  [VarExporter] tfix: s/markAsSkipped/markTestSkipped/
  Also check PUBLIC_ACCESS for authenticated tokens
  Fix enabled_locales behavior
  ...
2020-06-07 17:48:04 +02:00
Wouter de Jong
0ac530f460 Also check PUBLIC_ACCESS for authenticated tokens
Currently, authenticated users are denied access for pages that have
PUBLIC_ACCESS, as this attribute is only checked when no token was set.
2020-05-31 23:41:52 +02:00
Nicolas Grekas
608b770f1b Merge branch '5.1'
* 5.1:
  [Validator] use "allowedVariables" to configure the ExpressionLanguageSyntax constraint
  [Security] Fixed AbstractToken::hasUserChanged()
  [PropertyAccess] fix merge
  [DI] fix typo
2020-05-30 23:59:47 +02:00
Nicolas Grekas
3e05f1dafe Merge branch '5.0' into 5.1
* 5.0:
  [Security] Fixed AbstractToken::hasUserChanged()
  [DI] fix typo
2020-05-30 23:52:37 +02:00
Nicolas Grekas
41b95952d3 Merge branch '4.4' into 5.0
* 4.4:
  [Security] Fixed AbstractToken::hasUserChanged()
  [DI] fix typo
2020-05-30 23:52:15 +02:00
Wouter de Jong
f297beb42c [Security] Fixed AbstractToken::hasUserChanged() 2020-05-30 23:50:11 +02:00
Nicolas Grekas
6567abe3f1 Merge branch '5.1'
* 5.1:
  Fix abstract method name in PHP doc block
  Various cleanups
  [HttpClient] fix issues in tests
  Fixes sprintf(): Too few arguments in form transformer
  [Console] Fix QuestionHelper::disableStty()
  [Validator] Use Mime component to determine mime type for file validator
  validate subforms in all validation groups
  Update Hungarian translations
  Add meaningful message when Process is not installed (ProcessHelper)
  [Messenger] Change the default notify timeout value for PostgreSQL
  [PropertyAccess] Fix TypeError parsing again.
  [TwigBridge] fix fallback html-to-txt body converter
  [Security/Http] fix merge
  [ErrorHandler] fix setting $trace to null in FatalError
  [Form] add missing Czech validators translation
  [Validator] add missing Czech translations
  never directly validate Existence (Required/Optional) constraints
2020-05-30 22:38:10 +02:00
Nicolas Grekas
51da6239ba Merge branch '5.0' into 5.1
* 5.0:
  Fix abstract method name in PHP doc block
  Various cleanups
  [HttpClient] fix issues in tests
  Fixes sprintf(): Too few arguments in form transformer
  [Console] Fix QuestionHelper::disableStty()
  [Validator] Use Mime component to determine mime type for file validator
  validate subforms in all validation groups
  Update Hungarian translations
  Add meaningful message when Process is not installed (ProcessHelper)
  [PropertyAccess] Fix TypeError parsing again.
  [TwigBridge] fix fallback html-to-txt body converter
  [Security/Http] fix merge
  [ErrorHandler] fix setting $trace to null in FatalError
  [Form] add missing Czech validators translation
  [Validator] add missing Czech translations
  never directly validate Existence (Required/Optional) constraints
2020-05-30 22:35:19 +02:00
Nicolas Grekas
8bbf62ea16 Merge branch '4.4' into 5.0
* 4.4:
  [Security/Http] fix merge
  [ErrorHandler] fix setting $trace to null in FatalError
2020-05-28 14:17:48 +02:00
Nicolas Grekas
15d4f7ac04 [Security/Http] fix merge 2020-05-28 14:17:38 +02:00
Nicolas Grekas
71d1d70945 Merge branch '5.1'
* 5.1:
  Handle fetch mode deprecation of DBAL 2.11.
  Fixed security-* package dependencies
  Fixed handling of CSRF logout error
  [WebProfilerBundle] changed label of memory usage in time panel (Mb into MiB)
  [DotEnv][WebLink][Templating][ErrorHandler] Updated README with minimal example
2020-05-28 10:21:24 +02:00
Nicolas Grekas
f36ec7cc81 Merge branch '5.0' into 5.1
* 5.0:
  Handle fetch mode deprecation of DBAL 2.11.
  Fixed handling of CSRF logout error
  [WebProfilerBundle] changed label of memory usage in time panel (Mb into MiB)
  [DotEnv][WebLink][Templating][ErrorHandler] Updated README with minimal example
2020-05-28 10:20:44 +02:00
Nicolas Grekas
da25ef172d Merge branch '4.4' into 5.0
* 4.4:
  Handle fetch mode deprecation of DBAL 2.11.
  Fixed handling of CSRF logout error
  [WebProfilerBundle] changed label of memory usage in time panel (Mb into MiB)
  [DotEnv][WebLink][Templating][ErrorHandler] Updated README with minimal example
2020-05-28 10:20:26 +02:00
Nicolas Grekas
dfe8c816a6 Merge branch '3.4' into 4.4
* 3.4:
  Handle fetch mode deprecation of DBAL 2.11.
  Fixed handling of CSRF logout error
2020-05-28 10:15:49 +02:00
Wouter de Jong
50348f2eb7 Fixed handling of CSRF logout error 2020-05-26 17:30:38 +02:00
Nicolas Grekas
9e0f34cd12 Merge branch '5.1'
* 5.1:
  Allow email message to have "To", "Cc", or "Bcc" header to be valid
  [FrameworkBundle] Removed detection of Serializer < 3.2
  Update pull request template for 5.1.
  [Security/Core] fix PHP8 deprecation
2020-05-25 14:33:49 +02:00
Nicolas Grekas
780c57672b Merge branch '5.0' into 5.1
* 5.0:
  Allow email message to have "To", "Cc", or "Bcc" header to be valid
  [FrameworkBundle] Removed detection of Serializer < 3.2
  Update pull request template for 5.1.
  [Security/Core] fix PHP8 deprecation
2020-05-25 14:33:44 +02:00
Nicolas Grekas
2c262df4ef Merge branch '4.4' into 5.0
* 4.4:
  Allow email message to have "To", "Cc", or "Bcc" header to be valid
  [FrameworkBundle] Removed detection of Serializer < 3.2
  Update pull request template for 5.1.
  [Security/Core] fix PHP8 deprecation
2020-05-25 14:33:25 +02:00
Nicolas Grekas
aa53bdb77b [Security/Core] fix PHP8 deprecation 2020-05-24 11:45:24 +02:00
Nicolas Grekas
757b8f7c59 Merge branch '5.1'
* 5.1: (33 commits)
  [Cache] $lifetime cannot be null
  [Serializer] minor cleanup
  fix merge
  Run PHP 8 as 7.4.99
  Remove calls to deprecated ReflectionParameter::getClass().
  [VarDumper] fix PHP 8 support
  Removed "services" prototype node from "custom_authenticator"
  Add php 8 to travis.
  [Cache] Accessing undefined constants raises an Error in php8
  [Cache] allow DBAL v3
  Skip Doctrine DBAL on php 8 until we have a compatible version.
  [DomCrawler] Catch expected ValueError.
  Made method signatures compatible with their corresponding traits.
  [ErrorHandler] Apply php8 fixes from Debug component.
  [DomCrawler] Catch expected ValueError.
  [Validator] Catch expected ValueError.
  [VarDumper] ReflectionFunction::isDisabled() is deprecated.
  [BrowserKit] Raw body with custom Content-Type header
  Revert https://github.com/symfony/symfony/pull/34986
  Make ExpressionLanguageSyntax validator usable with annotation
  ...
2020-05-23 15:10:26 +02:00
Nicolas Grekas
56faca9c38 Merge branch '5.0' into 5.1
* 5.0: (28 commits)
  [Cache] $lifetime cannot be null
  [Serializer] minor cleanup
  fix merge
  Run PHP 8 as 7.4.99
  Remove calls to deprecated ReflectionParameter::getClass().
  [VarDumper] fix PHP 8 support
  Add php 8 to travis.
  [Cache] Accessing undefined constants raises an Error in php8
  [Cache] allow DBAL v3
  Skip Doctrine DBAL on php 8 until we have a compatible version.
  [DomCrawler] Catch expected ValueError.
  Made method signatures compatible with their corresponding traits.
  [ErrorHandler] Apply php8 fixes from Debug component.
  [DomCrawler] Catch expected ValueError.
  [Validator] Catch expected ValueError.
  [VarDumper] ReflectionFunction::isDisabled() is deprecated.
  [BrowserKit] Raw body with custom Content-Type header
  [PropertyAccess] Parse php 8 TypeErrors correctly.
  [Intl] Fix call to ReflectionProperty::getValue() for static properties.
  [HttpKernel] Prevent calling method_exists() with non-string values.
  ...
2020-05-23 15:08:13 +02:00
Nicolas Grekas
08afeed555 Merge branch '4.4' into 5.0
* 4.4: (27 commits)
  [Serializer] minor cleanup
  fix merge
  Run PHP 8 as 7.4.99
  Remove calls to deprecated ReflectionParameter::getClass().
  [VarDumper] fix PHP 8 support
  Add php 8 to travis.
  [Cache] Accessing undefined constants raises an Error in php8
  [Cache] allow DBAL v3
  Skip Doctrine DBAL on php 8 until we have a compatible version.
  [DomCrawler] Catch expected ValueError.
  Made method signatures compatible with their corresponding traits.
  [ErrorHandler] Apply php8 fixes from Debug component.
  [DomCrawler] Catch expected ValueError.
  [Validator] Catch expected ValueError.
  [VarDumper] ReflectionFunction::isDisabled() is deprecated.
  [BrowserKit] Raw body with custom Content-Type header
  [PropertyAccess] Parse php 8 TypeErrors correctly.
  [Intl] Fix call to ReflectionProperty::getValue() for static properties.
  [HttpKernel] Prevent calling method_exists() with non-string values.
  Fix wrong roles comparison
  ...
2020-05-23 14:58:59 +02:00
Thibaut Salanon
7d2ad4b265 Fix wrong roles comparison 2020-05-22 14:29:11 +02:00
Nicolas Grekas
430b884570 Merge branch '5.1'
* 5.1:
  [PhpUnitBridge] fix leftover
  [PhpUnitBridge] fix installing under PHP >= 8
  Use ">=" for the "php" requirement
  bump icu 67.1
  [DI] Remove preload primitive types
  [Validator] Add missing translations of nn locale
  [HttpKernel] Fix that the `Store` would not save responses with the X-Content-Digest header present
  [Intl] bump icu 67.1
  [Validator] allow passing a validator to Validation::createCallable()
2020-05-20 19:44:07 +02:00
Nicolas Grekas
e65cdb685f Merge branch '5.0' into 5.1
* 5.0:
  [PhpUnitBridge] fix leftover
  [PhpUnitBridge] fix installing under PHP >= 8
  Use ">=" for the "php" requirement
  bump icu 67.1
2020-05-20 19:43:50 +02:00
Nicolas Grekas
b429b15eb5 Merge branch '4.4' into 5.0
* 4.4:
  [PhpUnitBridge] fix leftover
  [PhpUnitBridge] fix installing under PHP >= 8
  Use ">=" for the "php" requirement
  bump icu 67.1
2020-05-20 19:38:26 +02:00
Nicolas Grekas
f8aa0873cf Use ">=" for the "php" requirement 2020-05-20 10:37:50 +02:00
Nicolas Grekas
b1c738341f Merge branch '5.1'
* 5.1:
  [PhpUnitBridge] fix bad detection of unsilenced deprecations
  [Security] Unserialize $parentData, if needed, to avoid errors
  [HttpKernel] Fix error logger when stderr is redirected to /dev/null (FPM)
2020-05-19 10:31:40 +02:00
Nicolas Grekas
b92399136e Merge branch '5.0' into 5.1
* 5.0:
  [PhpUnitBridge] fix bad detection of unsilenced deprecations
  [Security] Unserialize $parentData, if needed, to avoid errors
  [HttpKernel] Fix error logger when stderr is redirected to /dev/null (FPM)
2020-05-19 10:31:21 +02:00
Nicolas Grekas
31ffd761c3 Merge branch '4.4' into 5.0
* 4.4:
  [PhpUnitBridge] fix bad detection of unsilenced deprecations
  [Security] Unserialize $parentData, if needed, to avoid errors
  [HttpKernel] Fix error logger when stderr is redirected to /dev/null (FPM)
2020-05-19 10:31:00 +02:00
rfaivre
b447433b67 [Security] Unserialize $parentData, if needed, to avoid errors 2020-05-18 23:38:28 +02:00
Fabien Potencier
25c4889c8e updated version to 5.2 2020-05-16 14:09:30 +02:00
Wouter de Jong
c49d00f984 Added deprecation for RememberMe services without logout() method 2020-05-16 13:05:23 +02:00
Nicolas Grekas
5dd99f2062 bug #36806 RememberMeLogoutListener should depend on LogoutHandlerInterface (scheb)
This PR was merged into the 5.1-dev branch.

Discussion
----------

RememberMeLogoutListener should depend on LogoutHandlerInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| License       | MIT

`RememberMeLogoutListener`, which was introduced together with the new authenticator security in Symfony 5.1,  depends on `AbstractRememberMeServices`. This forces people to always extend from `AbstractRememberMeServices`, even when they're implementing the correct interface.

I'd suggest to depend on the minimum interface, which is `LogoutHandlerInterface`, instead.

Example of the type errors you'd get otherwise:
`
Argument 1 passed to Symfony\Component\Security\Http\EventListener\RememberMeLogoutListener::__construct() must be an instance of Symfony\Component\Security\Http\RememberMe\AbstractRememberMeServices, instance of Scheb\TwoFactorBundle\Security\Authentication\RememberMe\RememberMeServicesDecorator given, called in var/cache/dev/Container3IpOCEd/getSecurity_Logout_Listener_RememberMe_MainService.php on line 22
`

with

```php
class RememberMeServicesDecorator implements RememberMeServicesInterface, LogoutHandlerInterface
[...]
```

Commits
-------

994700fbae Depend on LogoutHandlerInterface
2020-05-16 11:30:21 +02:00
Nicolas Grekas
a86058c2fb bug #36805 [Security\Core] Fix NoopAuthenticationManager::authenticate() return value (chalasr)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Security\Core] Fix NoopAuthenticationManager::authenticate() return value

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36804
| License       | MIT
| Doc PR        | -

Commits
-------

b05da72a3c [Security\Core] Fix NoopAuthenticationManager::authenticate() return value
2020-05-16 11:27:10 +02:00
Robin Chalas
b05da72a3c [Security\Core] Fix NoopAuthenticationManager::authenticate() return value 2020-05-16 11:27:00 +02:00
Nicolas Grekas
be93a222e4 Merge branch '5.0'
* 5.0:
  [VarDumper] fix for change in PHP 7.4.6
  Added regression test for AccountStatusException behavior (ref #36822)
  [HttpClient] fix PHP warning + accept status code >= 600
  [Security/Core] fix compat of `NativePasswordEncoder` with pre-PHP74 values of `PASSWORD_*` consts
  embed resource name in error message
  [FrameworkBundle] fix stringable annotation
  Change priority of KernelEvents::RESPONSE subscriber
  Fix register event listeners compiler pass
  Missing description in `messenger:setup-transports` command
  [Serializer] fix issue with PHP 8
  [WebProfiler] Remove 'none' when appending CSP tokens
  [TwigBundle] FormExtension does not have a constructor anymore since sf 4.0
  [Yaml] Fix escaped quotes in quoted multi-line string
2020-05-16 11:12:54 +02:00
Nicolas Grekas
241542e543 Merge branch '4.4' into 5.0
* 4.4:
  [VarDumper] fix for change in PHP 7.4.6
  Added regression test for AccountStatusException behavior (ref #36822)
  [HttpClient] fix PHP warning + accept status code >= 600
  [Security/Core] fix compat of `NativePasswordEncoder` with pre-PHP74 values of `PASSWORD_*` consts
  embed resource name in error message
  [FrameworkBundle] fix stringable annotation
  Change priority of KernelEvents::RESPONSE subscriber
  Fix register event listeners compiler pass
  Missing description in `messenger:setup-transports` command
  [Serializer] fix issue with PHP 8
  [WebProfiler] Remove 'none' when appending CSP tokens
  [TwigBundle] FormExtension does not have a constructor anymore since sf 4.0
  [Yaml] Fix escaped quotes in quoted multi-line string
2020-05-16 11:10:03 +02:00
Nicolas Grekas
bce37603cb bug #36824 [Security/Core] fix compat of NativePasswordEncoder with pre-PHP74 values of PASSWORD_* consts (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[Security/Core] fix compat of `NativePasswordEncoder` with pre-PHP74 values of `PASSWORD_*` consts

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36451
| License       | MIT
| Doc PR        | -

Commits
-------

df32171cb2 [Security/Core] fix compat of `NativePasswordEncoder` with pre-PHP74 values of `PASSWORD_*` consts
2020-05-16 11:07:52 +02:00
Nicolas Grekas
fb4c3f920f Merge branch '3.4' into 4.4
* 3.4:
  [VarDumper] fix for change in PHP 7.4.6
  Added regression test for AccountStatusException behavior (ref #36822)
  embed resource name in error message
  [Serializer] fix issue with PHP 8
  [Yaml] Fix escaped quotes in quoted multi-line string
2020-05-16 11:03:35 +02:00
Wouter J
08fbfcf5a0 Added regression test for AccountStatusException behavior (ref #36822) 2020-05-15 23:22:25 +02:00
Nicolas Grekas
df32171cb2 [Security/Core] fix compat of NativePasswordEncoder with pre-PHP74 values of PASSWORD_* consts 2020-05-15 14:38:59 +02:00
Christian Scheb
994700fbae Depend on LogoutHandlerInterface 2020-05-13 15:07:15 +02:00
Stefan Kruppa
b009254090 [Security] Improve method signatures (minor) 2020-05-09 13:45:48 +02:00
Nicolas Grekas
fb90fb3bb7 minor #36758 [5.1] CS fixes (nicolas-grekas)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[5.1] CS fixes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

bb164e6615 [5.1] CS fixes
2020-05-08 14:37:13 +02:00
Nicolas Grekas
f8616f8eae Merge branch '5.0'
* 5.0:
  [PhpUnitBridge] fix bad test
  [4.4] CS fixes
  [3.4] CS fixes
  Disable phpunit verbosity
  Queue name is a required parameter
  [FrameworkBundle] display actual target for error in AssetsInstallCommand
  Remove patches for Doctrine bugs and deprecations
  [Mime] fix bad method call on "EmailAddressContains"
  [DI][EventDispatcher] added contract for implementation
2020-05-08 14:36:29 +02:00
Nicolas Grekas
0b34b39cc8 Merge branch '4.4' into 5.0
* 4.4:
  [PhpUnitBridge] fix bad test
  [4.4] CS fixes
  [3.4] CS fixes
  Disable phpunit verbosity
  Queue name is a required parameter
  [FrameworkBundle] display actual target for error in AssetsInstallCommand
  Remove patches for Doctrine bugs and deprecations
  [Mime] fix bad method call on "EmailAddressContains"
  [DI][EventDispatcher] added contract for implementation
2020-05-08 14:34:39 +02:00
Nicolas Grekas
bb164e6615 [5.1] CS fixes 2020-05-08 12:41:08 +02:00
Nicolas Grekas
eba09d47e7 [4.4] CS fixes 2020-05-08 12:39:41 +02:00
Fabien Potencier
ac1a336040 Fix typo 2020-05-05 07:41:22 +02:00
Fabien Potencier
a0c2dd8a87 feature #36656 [Security/Core] Add CustomUserMessageAccountStatusException (VincentLanglet)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Security/Core] Add CustomUserMessageAccountStatusException

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | Not really needed

When implementing the `UserCheckerInterface`, we can throw `AccountStatusException`. Similar to `CustomUserMessageAuthenticationException`, this exception allow to throw an `AccountStatusException` with a custom message.

Commits
-------

9233efbe06 Add CustomUserMessageAccountStatusException
2020-05-05 07:40:46 +02:00
Nicolas Grekas
169e49d491 Fix exception messages containing exception messages 2020-05-04 17:12:51 +02:00
Wouter de Jong
ac84a6c5d9 Removed AnonymousToken from the authenticator system
* Anonymous users are actual to unauthenticated users, both are now represented by no token
* Added a PUBLIC_ACCESS Security attribute to be used in access_control
* Deprecated "anonymous: lazy" in favor of "lazy: true"
2020-05-03 08:43:40 +02:00
Wouter de Jong
5ba4d1de86 Renamed VerifyAuthenticatorCredentialsEvent to CheckPassportEvent 2020-05-02 20:51:30 +02:00
Vincent Langlet
9233efbe06 Add CustomUserMessageAccountStatusException 2020-05-01 19:29:52 +02:00
Wouter de Jong
8708a6c37d Integrated Guards with the Authenticator system 2020-04-24 19:07:56 +02:00
Nicolas Grekas
670e601d19 Merge branch '5.0'
* 5.0:
  fix merge
2020-04-21 23:19:50 +02:00
Nicolas Grekas
ebc90fb0c5 Merge branch '4.4' into 5.0
* 4.4:
  fix merge
2020-04-21 23:19:41 +02:00
Nicolas Grekas
15d2b77632 fix merge 2020-04-21 23:19:23 +02:00
Nicolas Grekas
7ce2f2401a Merge branch '5.0'
* 5.0:
  [FrameworkBundle] Fix session.attribute_bag service definition
  [Routing] Remove unused properties from the Route annotation
  [Routing] Add missing _locale requirements
  Update LdapBindAuthenticationProvider.php
  Add reproducer to for hit after update expire cacheItem
  [Cache] fix FilesystemTagAwareAdapter failing when a tag link preexists
2020-04-21 23:06:40 +02:00
Nicolas Grekas
4042cc49d1 Merge branch '4.4' into 5.0
* 4.4:
  [FrameworkBundle] Fix session.attribute_bag service definition
  [Routing] Remove unused properties from the Route annotation
  [Routing] Add missing _locale requirements
  Update LdapBindAuthenticationProvider.php
  Add reproducer to for hit after update expire cacheItem
  [Cache] fix FilesystemTagAwareAdapter failing when a tag link preexists
2020-04-21 23:02:50 +02:00
Nicolas Grekas
0ed6cfd412 Merge branch '3.4' into 4.4
* 3.4:
  [FrameworkBundle] Fix session.attribute_bag service definition
  Update LdapBindAuthenticationProvider.php
2020-04-21 23:01:55 +02:00
Robin Chalas
f8b86df6af fix tests 2020-04-21 22:24:20 +02:00
Wouter de Jong
be3a9a93f0 Applied left-over review comments from #33558 2020-04-21 22:14:49 +02:00
Sebastiaan Stok
5cb633c0dd
Update CsrfTokenBadge.php 2020-04-21 17:08:27 +02:00
Wouter de Jong
b1e040f311 Rename providerKey to firewallName for more consistent naming 2020-04-20 14:20:56 +02:00
Wouter de Jong
50224aa285 Introduce Passport & Badges to extend authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
9ea32c4ed3 Also use authentication failure/success handlers in FormLoginAuthenticator 2020-04-20 14:20:56 +02:00
Wouter de Jong
0fe5083a3e Added JSON login authenticator 2020-04-20 14:20:56 +02:00
Wouter de Jong
7ef6a7ab03 Use the firewall event dispatcher 2020-04-20 14:20:56 +02:00
Wouter de Jong
95edc806a1 Added pre-authenticated authenticators (X.509 & REMOTE_USER) 2020-04-20 14:20:56 +02:00
Wouter de Jong
f5e11e5f32 Reverted changes to the Guard component 2020-04-20 14:20:56 +02:00
Wouter de Jong
ba3754a80f Differentiate between interactive and non-interactive authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
6b9d78d5e0 Added tests 2020-04-20 14:20:56 +02:00
Wouter de Jong
59f49b20ca Rename AuthenticatingListener 2020-04-20 14:20:56 +02:00
Wouter de Jong
60d396f2d1 Added automatically CSRF protected authenticators 2020-04-20 14:20:56 +02:00
Wouter de Jong
bf1a452e94 Merge AuthenticatorManager and AuthenticatorHandler
The AuthenticatorManager now performs the whole authentication process. This
allows for manual authentication without duplicating or publicly exposing parts
of the process.
2020-04-20 14:20:56 +02:00
Wouter de Jong
44cc76fec2 Use one AuthenticatorManager per firewall 2020-04-20 14:20:56 +02:00
Wouter de Jong
ddf430fc1e Added remember me functionality 2020-04-20 14:20:56 +02:00
Wouter de Jong
1c810d5d2a Added support for lazy firewalls 2020-04-20 14:20:56 +02:00
Wouter de Jong
7859977324 Removed all mentions of 'guard' in the new system
This to remove confusion between the new system and Guard. When using the new
system, guard should not be installed. Guard did however influence the idea
behind the new system. Thus keeping the mentions of "guard" makes it confusing
to use the new system.
2020-04-20 14:20:56 +02:00
Wouter de Jong
999ec2795f Refactor to an event based authentication approach
This allows more flexibility for the authentication manager (to e.g. implement
login throttling, easier remember me, etc). It is also a known design pattern
in Symfony HttpKernel.
2020-04-20 14:20:56 +02:00
Wouter de Jong
b14a5e8c52 Moved new authenticator to the HTTP namespace
This removes the introduced dependency on Guard from core. It also allows an
easier migration path, as the complete Guard subcomponent can now be deprecated
later in the 5.x life.
2020-04-20 14:20:56 +02:00
Wouter de Jong
b923e4c4f6 Enabled remember me for the GuardManagerListener 2020-04-20 14:20:56 +02:00
Wouter de Jong
873b949cf9 Mark new core authenticators as experimental 2020-04-20 14:20:56 +02:00
Wouter de Jong
4c06236933 Fixes after testing in Demo application 2020-04-20 14:20:56 +02:00
Wouter de Jong
fa4b3ec213 Implemented password migration for the new authenticators 2020-04-20 14:20:55 +02:00
Wouter de Jong
5efa892395 Create a new core AuthenticatorInterface
This is an iteration on the AuthenticatorInterface of the Guard, to allow more
flexibility so it can be used as a real replaced of the authentication
providers and listeners.
2020-04-20 14:20:55 +02:00