password symfony firewall symfony-security

password - Autentica múltiples cortafuegos Symfony2 con un formulario de inicio de sesión



symfony hash (1)

Tal vez podrías probar la propiedad de firewall ''contextual''.

Digamos que tiene una configuración como esta (que presumiblemente lo hace):

security: // providers etc ... firewall: main: pattern: # ... provider: my_users http_basic: ~ api: pattern: # ... provider: my_users http_basic: ~

En este caso, la sesión del usuario contendrá una propiedad ''_security_main'' después de autenticarse contra el firewall ''principal'', y luego cuando intenten acceder a una ubicación ''api'' se les pedirá que vuelvan a autenticar y luego obtendrán un ''_security_api'' propiedad de sesión.

Para evitar esta nueva solicitud, puede agregar la propiedad ''context'' a cada definición de firewall para compartir la misma autenticación, por lo que:

security: # providers etc ... firewall: main: pattern: # ... provider: my_users http_basic: ~ context: primary_auth # new api: pattern: # ... provider: my_users http_basic: ~ context: primary_auth # new

En este caso, luego de la autenticación con el firewall ''principal'', se establecerá una propiedad ''_security_primary_auth'' en la sesión del usuario. Cualquier solicitud posterior dentro del firewill ''api'' usará entonces el valor de ''_security_primary_auth'' para establecer el estado de autenticación (y, por lo tanto, el usuario aparecerá autenticado).

Por supuesto, este intercambio de contexto de autenticación funcionará en ambos sentidos (ya sea que se autentiquen primero con el firewall ''principal'' o ''api''); si solo quisieras transitoriedad en una dirección, las cosas serían más complejas.

Espero que esto ayude.

Tengo dos firewalls:

  1. api (para llamadas API)
  2. main (para todo lo demás)

El inicio de sesión de mi aplicación cliente se realiza a través del firewall main . Sin embargo, sí interactúa con los puntos finales bajo el firewall api para obtener datos. El problema aquí es que no quiero obligar al usuario a iniciar sesión por segunda vez para autenticarse contra el segundo firewall.

¿Cómo puedo autenticar contra ambos servidores de seguridad con solo un formulario de inicio de sesión?