servicios que por español ejemplo basada autenticacion java http authentication jersey

java - que - Autenticación de usuario en un servicio REST de Jersey



oauth2 java (5)

Estoy desarrollando una aplicación REST, que está usando el framework Jersey. Me gustaría saber cómo puedo controlar la autenticación de usuario. He buscado en muchos lugares, y el artículo más cercano que he encontrado es el siguiente: http://weblogs.java.net/blog/2008/03/07/authentication-jersey .

Sin embargo, este artículo solo se puede usar con un servidor GlassFish y una base de datos adjunta. ¿Hay alguna forma de que pueda implementar una interfaz en Jersey y usarla como filtro antes de llegar al recurso REST solicitado?

Quiero usar la autenticación básica ahora, pero debe ser lo suficientemente flexible como para poder cambiar eso en otro momento.


Claro, puedes usar un filtro de servlet tradicional para esto.

Agregue el filtro a su web.xml, busque los encabezados de autenticación que esté usando (Básico o Resumen), realice su lógica de autenticación en función de esos valores y almacene el resultado en un atributo de sesión. En su recurso de Jersey (posiblemente ctor), extraiga el resultado de autenticación del atributo de sesión y continúe el procesamiento o no según si este es el resultado que necesita.

Su administrador de recursos de Jersey probablemente se vería así:

protected AbstractResource(@Context ServletContext servletContext, @Context HttpServletRequest httpServletRequest) { ... HttpSession session = httpServletRequest.getSession(); // get whatever you put in the session in the auth filter here and compare }



Estoy trabajando en algo similar a esto. En mi implementación, tenemos Apache httpd front-ended para manejar la autenticación HTTP básica y simplemente reenvía todas las solicitudes con información de encabezado que contiene el usuario y los roles.

A partir de eso, estoy trabajando en el análisis de estas piezas utilizando un filtro de servlet para envolver el HttpServletRequest usando una publicación que encontré en CodeRanch . Esto me permite usar las anotaciones @RolesAllowed como @RolesAllowed en cada recurso que deseo filtrar. Para que todas estas piezas funcionaran, sin embargo, tuve que agregar lo siguiente a mi servlet en el web.xml :

<servlet> <!-- some other settings and such ... --> <init-param> <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name> <param-value>com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory</param-value> </init-param> ... </servlet>

Es posible que encuentre la respuesta de Eric Warriner en una publicación reciente de interés: Jersey, Tomcat y Anotaciones de seguridad


Estoy utilizando con éxito la seguridad de primavera para asegurar mi API basada en Jersey. Tiene esquemas de autenticación conectables que le permiten cambiar de autenticación básica a otra cosa más adelante. No estoy usando Spring en general, solo las cosas de seguridad.

Aquí está la parte relevante de mi web.xml

<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/security-applicationContext.xml, /WEB-INF/applicationContext.xml </param-value> </context-param> <!-- Enables Spring Security --> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> <init-param> <param-name>targetBeanName</param-name> <param-value>springSecurityFilterChain</param-value> </init-param> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Puede dejar applicationContext.xml empty (<beans> </ beans>). Un ejemplo de security-applicationContext.xml se puede encontrar here


Puedes hacerlo de dos maneras, ya sea que escribas un filtro de servlet simple o que implementes un ResourceFilterFactory y manejes la autenticación en ContainerRequestFilter. El código detallado se encuentra en el enlace http://neopatel.blogspot.com/2011/11/jesey-writing-authentication-filter.html . Me gusta el enfoque del filtro de servlet personalmente ya que proporciona un control completo del ciclo de vida. Sin embargo, si necesita cosas más específicas como acceder a QueryParams o PathParams, entonces ResourceFilterFactory es el camino a seguir.