Hola a tod@s. Estoy intentando asegurar un servicio REST usando Spring Security.
Para acceder al servicio REST con autenticación estoy usando la extensión de Firefox RESTClient y, al realizar la petición Spring me lanza el siguiente error:
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext.
Estoy usando "global-method-security" para asegurar los métodos anotados con "@Secured".
Ésta es una parte del archivo web.xml:
[...]
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Éste es un fragmento del archivo de configuración de SpringSecurity:
[...]
<security:http auto-config="true">
</security:http>
<security:global-method-security secured-annotations="enabled">
<security:authentication-manager>
<security:authentication-provider user-service-ref="userService">
</security:authentication-provider>
</security:authentication-manager>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
<property name="url" value="jdbc:mysql://localhost:3306/example">
<property name="username" value="root">
<property name="password" value="">
</bean>
<security:jdbc-user-service id="userService" data-source-ref="dataSource" users-by-username-query="select email as username, claveAcceso as password, true as enabled from usuarios
join usuarios_privado on usuarios.idUsuario = usuarios_privado.idUsuario
and email=?" authorities-by-username-query="select email as username, rol as authorities from usuarios where email=?">
Y esto es el método de la clase UsuarioDAO.java que quiero asegurar:
[...]
@Secured("hasRole('USUARIO')")
@Transactional
public Usuario get(Integer id) {
Session session = sessionFactory.getCurrentSession();
return (Usuario)session.get(Usuario.class, id);
}
He revisado muchos lugares en internet y he probado multitud de configuraciones pero sigo obteniendo el mismo error.
¿Alguien sabría decirme dónde está el problema?
¡Saludos!