Cómo lograr un nivel de autenticación que me permita pasar “Se requiere una autenticación completa para acceder a este recurso”.
Estoy tratando de depurar una configuración de Resque en una aplicación heredada, y encontré que hay una ruta para resque en /hidden/resque
que sería útil acceder, pero no puedo acceder a la ruta. Me pregunto qué debo hacer … Cuando intento acceder a esa ruta obtengo un HTTP 500 debido a este error que se está lanzando:
Symfony\Component\Security\Core\Exception\InsufficientAuthenticationException: Se requiere autenticación completa para acceder a este recurso.
He intentado acceder tanto como una página web (después de autenticarme como un administrador en una ruta diferente) y usando curl -H 'Authorization: Basic 9339034147964aebec6716c0110311d1' 'https://web.mysite/hidden/resque' -v
. Sin éxito.
Entonces, ¿qué constituye una “autenticación completa”? Ya estoy iniciado sesión como usuario administrador en una de las otras rutas. ¿Necesitaría agregar algo más a la configuración a continuación? Esto no ha sido configurado por mí, por lo que no sabría si alguna vez funcionó.
app/config/routing.yml
ResqueBundle:
resource: "@ResqueBundle/Resources/config/routing.xml"
prefix: /hidden/resque
app/config/security.yml
access_control:
- { path: ^/hidden, roles: ROLE_ADMIN }
De acuerdo con la documentación:
IS_AUTHENTICATED_FULLY: Esto es similar a IS_AUTHENTICATED_REMEMBERED, pero más fuerte. Los usuarios que están conectados solo debido a una “cookie de recordar” tendrán IS_AUTHENTICATED_REMEMBERED pero no tendrán IS_AUTHENTICATED_FULLY.
¿Cómo puedo estar más “conectado” que usando una cookie? ¿Debo enviar una cabecera de autenticación básica con el nombre de usuario y la contraseña codificados en base64?
davy.ai
Depuración de la configuración de Resque en una aplicación heredada
Si estás intentando acceder a una ruta para Resque en
/hidden/resque
, pero no puedes acceder a la ruta, es posible que recibas un HTTP 500 debido al error “Symfony\Component\Security\Core\Exception\InsufficientAuthenticationException: Se requiere autenticación completa para acceder a este recurso”. Incluso después de autenticarte como usuario administrador en una ruta diferente o usando el comandocurl -H
, es posible que no puedas acceder a la ruta.Al observar el archivo
app/config/security.yml
, puedes ver que elaccess_control
está configurado para todas las rutas que comienzan con/hidden
y está restringido aROLE_ADMIN
. Sin embargo, eso puede no ser suficiente y es posible que necesites una autenticación completa.Según la documentación de Symfony,
IS_AUTHENTICATED_FULLY
es más fuerte queIS_AUTHENTICATED_REMEMBERED
. Por lo tanto, los usuarios que utilizan una “cookie de recordar sesión” tendránIS_AUTHENTICATED_REMEMBERED
pero noIS_AUTHENTICATED_FULLY
. Para acceder a la ruta, es posible que necesites estar “más autenticado” que solo con una cookie.Puedes intentar enviar una cabecera de autenticación básica con un nombre de usuario y contraseña codificados en base64. Además, verifica los archivos de configuración y asegúrate de que no haya nada que deba agregarse para permitir el acceso a la ruta. Como se trata de una aplicación heredada, es posible que no la hayas configurado tú y que necesites indagar un poco más en el archivo y en las discusiones anteriores con el desarrollador anterior para depurar la configuración de Resque.