tutorial - spring datasource aws rds
Circuito de inicio de sesiĆ³n con Spring Security requires-channel y Amazon Elastic Load Balancer (2)
Estoy intentando que mi seguridad de primavera funcione en un servidor utilizando Amazon Elastic Load Balancer (ELB). El ELB está configurado en el puerto 80 para reenviar a mi aplicación en el puerto 8080 y en el puerto 443 para reenviar también a 8080.
<security:intercept-url pattern="/login.xhtml" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https" />
<security:port-mappings>
<security:port-mapping http="80" https="443" />
</security:port-mappings>
Cada vez que accedo a esta página me meto en un bucle de inicio de sesión. Alguna idea de como resolver esto? No estoy seguro si Spring Security está teniendo problemas con el hecho de que ELB está enviando tráfico desde el puerto https 443 a mi aplicación en el puerto 8080.
Resulta que Spring Security usa ServletRequest.getServerPort () para determinar si está usando un puerto seguro. Mi tomcat se configuró utilizando 8080 y 8443, por lo que cuando ELB reenvía la solicitud desde 443 a mi Tomcat interno en 8443, la aplicación web no aceptaba esto como un puerto seguro:
20 Jun 18:16:49,184 ["http-bio-8443"-exec-5] DEBUG org.springframework.security. web.access.channel.RetryWithHttpsEntryPoint - Redirecting to: /login.xhtml
También intenté usar el proxyport pero no pude hacer que esto funcionara. Además, si configuras los puertos de seguridad de primavera para usar 8443 en su lugar, entonces no redirige correctamente (redirigirá la aplicación a 8443, que no existe externamente).
Para abreviar, funcionaron las siguientes configuraciones: ELB forward 80-> 80 y 443-> 443. Configure tomcat para usar 80 y 443. Configure las asignaciones de puertos para usar 80 y 443 en Spring Security
Un bucle de redireccionamiento casi siempre ocurre porque tiene una URL segura que no debe ser segura. Todas las URL están protegidas de forma predeterminada en la seguridad de primavera.
Además, si los recursos de JavaScript, CSS o de imágenes se cargan con solicitudes separadas en la página de inicio de sesión, sus URL también estarán protegidas y esto podría estar causando el bucle.
Habilite el registro de depuración y verá por qué se le redirige. Esto lo ayudará en el registro de depuración (busque depuración en la página).