Autenticación basada en formulario Nginx

0

Quiero tener nginx delante de mi Tomcat y actuar como una puerta de enlace de autenticación. Por lo tanto, si la solicitud no se autentica, se redirigirá al formulario de inicio de sesión que también se almacenará en nginx. nginx recopilará el usuario / contraseña de la solicitud de inicio de sesión y la pasará a RestAPI para su validación.

No quiero almacenar el formulario de inicio de sesión en Tomcat y dar acceso a las solicitudes no autenticadas de Tomcat.

¿Es posible esta configuración? (No tengo ningún problema en escribir algún código para llamar a este RestAPI desde nginx)

Gracias

    
pregunta Aaron_S 26.01.2017 - 15:48
fuente

1 respuesta

1

Es bastante fácil enrutar las solicitudes en función de si tienen o no un conjunto de encabezado particular. El bit difícil viene de determinar si está configurado correctamente.

La mayoría de la autenticación web es algo como esto: usted solicita una página. La aplicación ve que no ha enviado una cookie de sesión y lo redirige a la página de inicio de sesión. Usted ingresa y obtiene una cookie de sesión. Vuelve a solicitar la primera página, el servidor lee la cookie de sesión y la valida, luego le envía la página.

La parte difícil para usted es lidiar con la validación. Dice que no desea que ninguna solicitud no autenticada de llegue a su aplicación, pero eso significa que no solo necesita verificar que el cliente haya enviado la autenticación, sino que es válido . De lo contrario, es fácil para un atacante establecer un valor arbitrario para su encabezado de autenticación y obtener acceso a su aplicación.

Por lo general, diría que debe implementar controles de acceso en la aplicación. Conoce el contexto de las diversas páginas que sirve, y el hecho de que la autenticación y la autorización se incluyan directamente con la aplicación hace que sea más difícil para un atacante eludir la capa de autenticación. Sin embargo, según su pregunta, asumo que esta no es una solución viable para usted (porque es una aplicación de terceros que no puede modificar, por ejemplo).

Nginx es realmente bueno en el procesamiento de solicitudes http. No es particularmente bueno para implementar la lógica de la aplicación. Tendría nginx proxy todas las solicitudes a una aplicación de autenticación, y esa aplicación luego envía las solicitudes autenticadas a la aplicación principal. Esto será mucho más sencillo que intentar implementar la comprobación automática en nginx.

    
respondido por el Xiong Chiamiov 26.01.2017 - 16:41
fuente

Lea otras preguntas en las etiquetas