Jump to content

No funciona autentificación via apiKey (SimplePreAuthenticatorInterface) SOLUCIONADO


Manuel_GT

Recommended Posts

Hola.

Escribo aquí buscando ayuda porque llevo con esto demasiadas horas y sinceramente ya no veo que puede estar incorrecto. Explico mi problema.

El objetivo es dar acceso a una página de mi módulo en el backEnd sin pasar por el login.  Básicamente el usuario (empleado) recibe un email con un link donde debe confirmar unos datos. La idea es que el link le muestre el mismo sin tener que pasar por el login. Para ello, el link lleva asociado un "token" o "apiKey" (hash) que identifica y está asociado en bbdd a ese usuario y formulario.

.../index.php/modules/warehouses/agreement?hash=1614a0aeb88a9afb2bbe687860b8b8c9cc4b7967

Para lograr este objetivo, he creado un nuevo "firewall" en symfony siguiendo paso por paso sus instrucciones https://symfony.com/doc/3.4/security/api_key_authentication.html

Todo está listo pero cuando llamo a mi url acabo en el login 😭. He puesto trazas en mi clase "Authenticator" (que implementa SimplePreAuthenticatorInterface ) para comprobar un poco y lo que veo es que en ningún caso hace el paso 1 de su documentación, llamar a la función "createToken()" que es la que recibe mi apiKey por request, con lo que directamente el paso 2 que es la función supportsToken() (que si se ejecuta) recibe un token null y da false y el firewall pasa al siguiente "Authenticator" que es el propio de Prestashop -> al login.

Lo que no comprendo es por qué si llama a supportsToken correctamente no llama a createToken que está en la misma clase.

¿Alguien sabe si hay algún bug de Symfony en esto? o ¿ha probado a hacer este desarrollo y le ha funcionado?

¿Sabéis como podría activar el Log de Symfony para poder ver una salida de log más completa? Veo que en su código fuente hay lineas de log pero no las tengo en mi dev.log"

¿Sabéis de alguna herramienta para poder hacer debug paso a paso y ver que está haciendo realmente esto?

Lo peor de todo esto es esa sensación de impotencia permanente al ver que no funciona, pero no hay errores visibles ni en la aplicación ni en los logs. Y me pasa mucho con este software. Es frustrante.

Toda ayuda es bien recibida.

NOTA: Mi Prestashop es 1.7.8.8

Muchas gracias

Link to comment
Share on other sites

Bueno, pues al final era simplemente que mi definición de "firewall" (hash-based) tenía que estar la primera en el fichero de configuración de seguridad "security.yml"

# To get started with security, check out the documentation:
# http://symfony.com/doc/current/book/security.html
security:

    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
    providers:
        in_memory:
            memory: ~
        admin:
            id: prestashop.security.admin.provider
        api_key_user_provider:
            id: aqwarehouses.security.apikey-user-provider

    firewalls:

        hash-based:
            pattern: warehouses/agreement
            stateless: false
            simple_preauth:
                authenticator: aqwarehouses.security.hash-authenticator
            provider: api_key_user_provider

        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~
            logout_on_user_change: true

Este tipo de cosas me desesperan.....

Link to comment
Share on other sites

  • Manuel_GT changed the title to No funciona autentificación via apiKey (SimplePreAuthenticatorInterface) SOLUCIONADO

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...