IT박스

Spring Security에 대한 로깅을 어떻게 활성화합니까?

itboxs 2020. 12. 14. 07:59
반응형

Spring Security에 대한 로깅을 어떻게 활성화합니까?


사용자 로그인을 처리하기 위해 Spring Security를 ​​설정하고 있습니다. 사용자로 로그인했으며 로그인이 성공하면 Access Denied 오류 페이지로 이동합니다. Spring Security 라이브러리에 대한 디버깅을 활성화하는 방법을 알 수 없기 때문에 내 사용자에게 실제로 어떤 역할이 할당되었는지 또는 액세스가 거부되는 규칙을 모릅니다.

내 보안 XML :

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

또한 log4j.logger.org.springframework.security=DEBUG내 log4j.properties에 추가하려고 시도했습니다.

Spring Security에 대한 디버그 출력을 어떻게 얻을 수 있습니까?


Spring Boot를 사용한다고 가정하면 또 다른 옵션은 다음을 입력하는 것입니다 application.properties.

logging.level.org.springframework.security=DEBUG

이것은 대부분의 다른 Spring 모듈에서도 동일합니다.

Spring Boot를 사용하지 않는 경우 로깅 구성 (예 : logback)에서 속성을 설정해보십시오.


You can easily enable debugging support using an option for the @EnableWebSecurity annotation:

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

Basic debugging using Spring's DebugFilter can be configured like this:

@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

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

By default Spring Security redirects user to the URL that he originally requested (/Load.do in your case) after login.

You can set always-use-default-target to true to disable this behavior:

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

참고URL : https://stackoverflow.com/questions/30855252/how-do-i-enable-logging-for-spring-security

반응형