Pregunta

Tengo la siguiente estructura del proyecto:

proyecto base (capa de servicio, modelo)   proyecto web   proyecto de servicio web

donde tanto el proyecto de la tela y el proyecto de servicios web dependen de los servicios del proyecto base y de uso facilitadas por el mismo.

hago un uso intensivo de la Spring Framework que significa que los servicios son las habas de primavera con métodos garantizados por el @Secured Anotación y Primavera de Seguridad . Creé un Voter extender el AbstractAclVoter que comprueba permisos de cliente.

Los usos de proyectos web Spring MVC y el proyecto de servicio web Spring WS con @Endpoint Anotaciones y el XwsSecurityInterceptor .

Aquí está mi problema:

Los permisos se comprueban si entra una llamada desde un controlador de proyectos web o en las pruebas JUnit del proyecto base, pero las solicitudes del proyecto de servicio web no se comprueban para el permiso correcto - mi votante no es llamada!

  • ¿Tiene esto algo que ver con la XwsSecurityInterceptor ?
  • ¿Es necesario el DelegatingFilterProxy en el proyecto de servicio web también? (Yo tengo sin ContextLoaderListener allí porque todo está configurado por la config MessageDispatcherServlet)
¿Fue útil?

Solución

Su objeto de usuario de autenticación con autoridad otorgada poblada está disponible sólo en el contexto web no en su proyecto de servicios web. Cuando realiza una llamada a su aplicación de servicio web, usted no tiene el mismo contexto de seguridad allí. Por lo que sus etiquetas de seguridad no funcionarán allí.

Otros consejos

Spring Security se integra como un filtro de servlet en la aplicación web. Así que supongo que la DelegatingFilterProxy tendrá que ser añadido a web.xml para el proyecto de servicios web para que pueda procesar las solicitudes que van a esa aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top