debugging spring-security

debugging - ¿Cómo habilito el registro para Spring Security?



spring-security (4)

La depuración básica con Spring''s DebugFilter se puede configurar así:

@EnableWebSecurity public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.debug(true); } }

Estoy configurando Spring Security para gestionar el inicio de sesión de los usuarios. He iniciado sesión como usuario y me llevan a una página de error de Acceso denegado al iniciar sesión correctamente. No sé qué roles le han asignado realmente a mi usuario, o la regla que hace que se deniegue el acceso, porque no puedo encontrar la manera de habilitar la depuración de la biblioteca Spring Security.

Mi xml de seguridad:

<?xml version="1.0" encoding="UTF-8"?> <beans ... > <!-- security --> <security:debug/><!-- doesn''t seem to be working --> <security:http auto-config="true"> <security:intercept-url pattern="/Admin**" access="hasRole(''PROGRAMMER'') or hasRole(''ADMIN'')"/> <security:form-login login-page="/Load.do" default-target-url="/Admin.do?m=loadAdminMain" authentication-failure-url="/Load.do?error=true" username-parameter="j_username" password-parameter="j_password" login-processing-url="/j_spring_security_check"/> <security:csrf/><!-- enable Cross Site Request Forgery protection --> </security:http> <security:authentication-manager> <security:authentication-provider> <security:jdbc-user-service data-source-ref="loginDataSource" users-by-username-query="SELECT username, password, active FROM userinformation WHERE username = ?" authorities-by-username-query=" SELECT ui.username, r.rolename FROM role r, userrole ur, userinformation ui WHERE ui.username=? AND ui.userinformationid = ur.userinformationid AND ur.roleid = r.roleid " /> <security:password-encoder hash="md5"/> </security:authentication-provider> </security:authentication-manager> </beans>

También he intentado agregar log4j.logger.org.springframework.security=DEBUG a mi log4j.properties

¿Cómo puedo obtener resultados de depuración para Spring Security?


Por defecto, Spring Security redirige al usuario a la URL que solicitó originalmente (/Load.do en su caso) después de iniciar sesión.

Puede establecer siempre-use-default-target en true para deshabilitar este comportamiento:

<security:http auto-config="true"> <security:intercept-url pattern="/Admin**" access="hasRole(''PROGRAMMER'') or hasRole(''ADMIN'')"/> <security:form-login login-page="/Load.do" default-target-url="/Admin.do?m=loadAdminMain" authentication-failure-url="/Load.do?error=true" always-use-default-target = "true" username-parameter="j_username" password-parameter="j_password" login-processing-url="/j_spring_security_check"/> <security:csrf/><!-- enable Cross Site Request Forgery protection --> </security:http>


Puede habilitar fácilmente el soporte de depuración utilizando una opción para la anotación @EnableWebSecurity :

@EnableWebSecurity(debug = true) public class SecurityConfiguration extends WebSecurityConfigurerAdapter { … }


Suponiendo que está utilizando Spring Boot, otra opción es poner lo siguiente en su application.properties .

logging.level.org.springframework.security=DEBUG

Esto es lo mismo para la mayoría de los otros módulos Spring también.

Si no está utilizando Spring Boot, intente configurar la propiedad en su configuración de registro, por ejemplo, logback.