web-dev-qa-db-fra.com

Comment activer la journalisation pour Spring Security?

Je suis en train de configurer Spring Security pour gérer la connexion des utilisateurs. Je me suis connecté en tant qu'utilisateur et je suis dirigé vers une page d'erreur Accès refusé après une connexion réussie. J'ignore quels rôles ont été effectivement attribués à mon utilisateur ou quelle est la règle qui entraîne le refus de l'accès, car je ne vois pas comment activer le débogage pour la bibliothèque Spring Security.

Mon xml de sécurité:

<?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>

J'ai aussi essayé d'ajouter log4j.logger.org.springframework.security=DEBUG à mon log4j.properties

Comment obtenir une sortie de débogage pour Spring Security?

54
Martin Carney

Une autre option est de mettre le texte suivant dans votre application.properties:

logging.level.org.springframework.security=DEBUG

Il en va de même pour la plupart des autres modules Spring.

92
delucasvb

Vous pouvez facilement activer le support de débogage en utilisant une option pour le @EnableWebSecurity annotation:

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

Le débogage de base à l'aide de DebugFilter de Spring peut être configuré comme suit:

@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.debug(true);
    }
}
21
cardil