This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Fabien Potencier df7099cb2d feature #39153 [Security] Automatically register custom authenticator as entry_point (if supported) (wouterj)
This PR was squashed before being merged into the 5.2 branch.

Discussion
----------

[Security] Automatically register custom authenticator as entry_point (if supported)

| Q             | A
| ------------- | ---
| Branch?       | 5.2 (hopefully?)
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37068
| License       | MIT
| Doc PR        | -

@weaverryan came up with exactly the same issue as proposed by a contributor before (see referenced ticket). Back then, it was decided impossible to fix: see https://github.com/symfony/symfony/pull/37075. However, after some thinking we came up with a way to fix the issue and improve the DX for custom authenticators.

The new authenticators are no longer required to implement `AuthenticationEntryPointInterface` (required for internal authenticators like the `RememberMeAuthenticator` and pre authenticated ones). This PR uses a compiler pass to check if a custom authenticator is supported:

```yaml
security:
  firewalls:
    main:
      # in any case, if an entry_point is already configured it'll not be overriden
      # (http_basic remains the entry point here)
      http_basic: ~
      custom_authenticator: App\Security\CustomAuthenticator
      entry_point: http_basic

      # if only one custom authenticator implements AuthenticationEntryPointInterface,
      # it's automatically configured as the entry point
      custom_authenticator: App\Security\CustomAuthenticator
      custom_authenticators: [App\Security\CustomAuthenticator, App\Security\NoEntryPointAuthenticator]

      # if no custom authenticator implements AuthenticationEntryPointInterface,
      # an error is thrown
      custom_authenticator: App\Security\NoEntryPointAuthenticator

      # if more than one authenticator implements AuthenticationEntryPointInterface,
      # the entry point must be configured explicitly (or an error is thrown)
      custom_authenticators: [App\Security\CustomAuthenticator, App\Security\AnotherCustomAuthenticator]
      entry_point: App\Security\CustomAuthenticator
```

---

I know this is very late for Symfony 5.2. It would be good to decide whether this can be included in the release, in order to smooth out the biggest struggle for people using custom authenticators for the first time.

Commits
-------

cab0672248 [Security] Automatically register custom authenticator as entry_point (if supported)
2020-11-27 11:24:59 +01:00
.github Merge branch '5.1' into 5.2 2020-11-21 10:39:55 +01:00
src/Symfony feature #39153 [Security] Automatically register custom authenticator as entry_point (if supported) (wouterj) 2020-11-27 11:24:59 +01:00
.appveyor.yml Merge branch '4.4' into 5.1 2020-11-02 16:45:32 +01:00
.editorconfig Update .editorconfig 2018-09-06 16:22:56 +02:00
.gitignore Run the phpunit-bridge from a PR 2019-08-02 17:46:19 +02:00
.php_cs.dist Merge branch '5.1' into 5.x 2020-10-28 22:46:03 +01:00
.travis.yml Merge branch '4.4' into 5.1 2020-11-16 16:58:32 +01:00
CHANGELOG-5.0.md Merge branch '5.0' into 5.1 2020-06-15 13:50:15 +02:00
CHANGELOG-5.1.md Update CHANGELOG for 5.1.8 2020-10-28 06:55:13 +01:00
CHANGELOG-5.2.md Update CHANGELOG for 5.2.0-RC2 2020-11-21 09:45:38 +01:00
CODE_OF_CONDUCT.md Added the Code of Conduct file 2018-10-10 03:13:30 -07:00
composer.json Require doctrine/persistence 2 2020-11-20 09:22:35 +01:00
CONTRIBUTING.md Mention the community review guide 2016-12-18 22:02:35 +01:00
CONTRIBUTORS.md Update CONTRIBUTORS for 3.4.46 2020-10-28 06:38:46 +01:00
LICENSE Update year in license files 2020-01-01 12:03:25 +01:00
link Merge branch '3.4' into 4.4 2020-08-26 10:30:46 +02:00
phpunit Simplify phpunit script. 2020-10-28 21:38:43 +01:00
phpunit.xml.dist Merge branch '4.4' into 5.1 2020-11-16 16:58:32 +01:00
README.md Minor improvement 2020-07-29 07:57:47 +02:00
UPGRADE-5.0.md Typo: somes styles fixed 2020-08-06 09:00:23 +02:00
UPGRADE-5.1.md Update UPGRADE-5.1.md 2020-09-07 01:58:27 +02:00
UPGRADE-5.2.md [HttpFoundation] Deprecate BinaryFileResponse::create(). 2020-11-20 16:47:02 +01:00
UPGRADE-6.0.md [HttpFoundation] Deprecate BinaryFileResponse::create(). 2020-11-20 16:47:02 +01:00

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (including BlaBlaCar.com and Spotify.com) and most of the popular PHP projects (including Drupal and Magento).

Installation

Documentation

Community

Contributing

Symfony is an Open Source, community-driven project with thousands of contributors. Join them contributing code or contributing documentation.

Security Issues

If you discover a security vulnerability within Symfony, please follow our disclosure procedure.

About Us

Symfony development is sponsored by SensioLabs, led by the Symfony Core Team and supported by Symfony contributors.