PROTEGER EL ADMIN CON CONTRASEÑA EN SYMFONY

Hace poco escribí un tutorial sobre easyadmin de symfony y ahora os quiero escribir sobre como proteger el admin con contraseña en symfony sin tener que hacer un sistema complicado de autenticación. En el ejemplo que voy a poner es una autenticación http básica.
Para realizar esta protección, voy a poner un ejemplo sencillo, aunque hay otras maneras:
Abrimos el fichero "security.yaml" que se encuentra en la carpeta "config".

security:
    encoders:
   Symfony\Component\Security\Core\User\User: bcrypt

    providers:
   chain_provider:
  chain:
      providers: [in_memory]
   in_memory:
  memory:
      users:
     administrador:
    password: 
    roles: 'ROLE_ADMIN'
    firewalls:
   secured_area:
  pattern: ^/admin
  http_basic:
      realm: 'Mi web admin'
      provider: in_memory
   dev:
  pattern: ^/(_(profiler|wdt)|css|images|js)/
  security: false

    access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }

En el código podemos ver, no está explicado en orden sino por importancia, paso a paso para entenderlo:
  • access_control: La web de la página que queremos proteger. Este caso es "admin" y el rol es "ROLE_ADMIN", se pueden gestionar varias páginas y roles.
  • providers: En esta sección se le indica a symfony donde "buscar" a los usuarios. En este caso está puesto que sea por memoria, es decir, que los usuarios los buscarán en este fichero y se le indica poniendo "in_memory", donde sindica los usuarios, en este caso el usuario es "administrador", su clave y su rol.
  • encoders: Se indica la codificacón de las contraseñas, puede ser "plain_text", "auto", "bcrypt", como en el ejemplo y otras.
  • generar password: Para generar una clave desde symfony basta con ejecutar el comando "php bin/console security:encode-password tu-password" y devolverá la clave codificada con lo la encriptación definida en encoders encoder:. Copiamos la clave generada y la copiamos en la sección "password" del usuario generado, en el ejemplo donde pone "".

Este es un ejemplo bastante sencillo. Y se pueden usar usuarios creados en base de datos y otras opciones.
Esta protección se puede hacer desde apache: Como proteger directorios y archivos con apache