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.

Filtro de autenticación genérico en Spring Security utilizado para autenticación.

Soy nuevo en Spring Security y me gustaría entender mejor el proceso de autenticación.

Esto es lo que encontré en Internet relacionado con el tema, si me equivoco en el proceso, por favor avísenme:

  1. El proceso de autenticación comienza en el Filter que podría ser parte de un FilterChain. El filtro podría ser de tipo UsernamePasswordAuthenticationFilter. La solicitud HTTP es interceptada y se intenta crear una Authentication Request (un objeto de una clase que implementa la interfaz Authentication, es decir, UsernamePasswordAuthenticationToken).

  2. El objeto Authentication se delega al AuthenticationManager.

  3. Basándose en lo que se ha pasado al AuthenticationManager, se lo delega al AuthenticationProvider correspondiente (por ejemplo, DaoAuthenticationProvider), donde tiene lugar la autenticación REAL.

  4. El AuthenticationProvider envía el objeto Authentication completamente autenticado al AuthenticationManager.

  5. En el Filter donde se invocó el AuthenticationManager, se llama a SecurityContextHolder.getContext().setAuthentication(authResult); y se finaliza el proceso de autenticación.

Mi pregunta se refiere a las implementaciones concretas de la clase Filter y el FilterChain relacionados con la autenticación.

En nuestra aplicación, la mayoría de los filtros de autenticación extienden AbstractAuthenticationProcessingFilter, y el FilterChain es de clase CompositeFilter. ¿Cuáles son las implementaciones “correctas” de facto de estas interfaces? Me disculpo de antemano por una pregunta tan tonta, pero aún necesito aprender este concepto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en Spring Security, puedo confirmar que la información que encontraste en Internet relacionada con el proceso de autenticación en Spring Security es correcta.

    En cuanto a las implementaciones concretas de la clase Filter y de FilterChain, no existe una implementación “correcta” en sí, ya que esto depende de los requisitos específicos de tu aplicación.

    En tu aplicación, parece que la mayoría de los filtros de autenticación se extienden de AbstractAuthenticationProcessingFilter, lo cual es una buena implementación para procesar las solicitudes de autenticación. En cuanto a FilterChain, usar CompositeFilter es una implementación válida, ya que te permite combinar múltiples filtros en una sola cadena de filtros.

    Sin embargo, vale la pena mencionar que Spring Security proporciona varios filtros y cadenas de filtros incorporados que puedes utilizar tal cual, como UsernamePasswordAuthenticationFilter, BasicAuthenticationFilter y SecurityContextHolderAwareRequestFilter. Estos filtros y cadenas de filtros han sido ampliamente probados y se utilizan ampliamente, por lo que generalmente se consideran como buenas implementaciones.

    En resumen, no hay una única implementación “correcta” de la clase Filter y FilterChain. Debes elegir la implementación que mejor se adapte a los requisitos de tu aplicación, ya sea utilizando los filtros y cadenas de filtros incorporados, implementando tus propios filtros y cadenas de filtros personalizados, o extendiendo los filtros y cadenas de filtros existentes.

Comments are closed.