es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lanzar una aplicación Spring (no boot) ejecutándose con HTTPS.

Intento realizar una conexión SAML con Azure B2C usando una aplicación de Spring que encontré en GitHub. Todo funciona bien hasta que lo ejecuto localmente, pero cuando necesito probar esta aplicación en un entorno de producción, me encuentro con problemas debido a la conexión HTTPS.

Mi entorno de producción está basado en AWS, estoy ejecutando tareas de ECS configuradas en un proxy inverso. Estoy utilizando un balanceador de carga con un escuchador HTTPS y una regla HTTP para redireccionar a HTTPS.

Esta aplicación está basada en Spring (no en Spring Boot) y genera un archivo WAR que ejecuto en un Tomcat 7.

Cuando intento iniciar sesión, esta aplicación realiza una solicitud HTTP que el balanceador de carga redirige a HTTPS, pero esta redirección invalida mi flujo de trabajo SAML.

Intenté agregar requires-channel="https" a cualquier nodo <security:intercept-url></security:intercept-url> en mi archivo securityContext.xml, pero cuando intento acceder a la aplicación en línea, obtengo un ERR_TOO_MANY_REDIRECTS.

Necesito configurar Tomcat y esta aplicación para que soliciten solo HTTPS sin necesidad de ninguna redirección, pero no sé cómo hacerlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Para configurar tu aplicación de Spring para trabajar solo con solicitudes HTTPS, debes seguir estos pasos:

    1. Actualiza tu archivo de configuración de Spring Security (securityContext.xml) y agrega el atributo requires-channel="https" a todos los nodos intercept-url. Este atributo se asegurará de que todas las solicitudes sean redirigidas a HTTPS.
    2. En tu archivo de configuración de tomcat7 (server.xml), encuentra la sección Connector que está configurada para HTTP y coméntala. Esto deshabilitará el conector HTTP y obligará a que todas las solicitudes se realicen mediante HTTPS.

    3. Actualiza el archivo de configuración de la aplicación (web.xml) agregando una restricción de seguridad que requiera HTTPS. Esto asegurará que todas las solicitudes a la aplicación se realicen a través de HTTPS.

      <web-app ...="">
        ...
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Área protegida</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
                <transport-guarantee>CONFIDENCIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
        ...
      </web-app>
    
    1. Por último, configura tu Amazon ELB para enviar el tráfico directamente al oyente HTTPS en tu servidor Tomcat.

    Siguiendo estos pasos, puedes configurar tu aplicación de Spring para trabajar solo con solicitudes HTTPS y evitar cualquier problema de redirección que pueda interferir con tu flujo de trabajo de SAML.

Comments are closed.