Java - Spring security y roles dinámicos

   
Vista:

Spring security y roles dinámicos

Publicado por Kratul (1 intervención) el 05/08/2015 11:37:56
Buenas

Estoy investigando el tema de la seguridad y los roles de Spring para conseguir hacer roles dinamicamente (por lo que no me vale poner las urls con lo roles en el spring-security-context.xml) y después de conseguirlo parece ser que ahora no deja entrar a ningún usuario a esa url aunque tenga el rol asignado. Os dejo el código a ver si alguien tiene idea de que puede ser.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class JdbcFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
 
	public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
        FilterInvocation fi = (FilterInvocation) object;
 
        String url = fi.getRequestUrl();
        HttpServletRequest request = fi.getHttpRequest();
 
        // Instead of hard coding the roles lookup the roles from the database using the url and/or HttpServletRequest
        // Do not forget to add caching of the lookup
        String[] roles = new String[]{};
        if("/person/list".equals(url)){
        	roles = new String[] { "ROLE_USER" };
        }
        return SecurityConfig.createList(roles);
    }
 
    public Collection<ConfigAttribute> getAllConfigAttributes() {
        return null;
    }
 
    public boolean supports(Class<?> clazz) {
        return FilterInvocation.class.isAssignableFrom(clazz);
    }
  }

Al iniciar la aplicación creo un usuario con el rol USER

1
accountRepository.save(new Account("user@user.com", "demo", "ROLE_USER"));

En principio consigo loguearme en la aplicación pero en cuanto llego a /person/list me da el siguiente error (basicamente es que me deniega el acceso por permisos)

1
2
2015-08-05 10:01:56.457 [localhost-startStop-1] WARN  o.s.s.c.h.DefaultFilterChainValidator - Anonymous access to the login page doesn't appear to be enabled. This is almost certainly an error. Please check your configuration allows unauthenticated access to the configured login page. (Simulated access was rejected: org.springframework.security.access.AccessDeniedException: Access is denied)

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder