Spring Security Custom Filter
스프링 시큐리티의 필터를 재정의 하거나 혹은 원하는 대로 추가할 수 있다.
기본 필터
Alias | Filter Class | Namespace Element or Attribute |
---|---|---|
CHANNEL_FILTER | ChannelProcessingFilter | http/intercept-url@requires-channel |
CONCURRENT_SESSION_FILTER | ConcurrentSessionFilter | session-management/concurrency-control |
SECURITY_CONTEXT_FILTER | SecurityContextPersistenceFilter | http |
LOGOUT_FILTER | LogoutFilter | http/logout |
X509_FILTER | X509AuthenticationFilter | http/x509 |
PRE_AUTH_FILTER | AstractPreAuthenticatedProcessingFilter Subclasses | N/A |
CAS_FILTER | CasAuthenticationFilter | N/A |
FORM_LOGIN_FILTER | UsernamePasswordAuthenticationFilter | http/form-login |
BASIC_AUTH_FILTER | BasicAuthenticationFilter | http/http-basic |
SERVLET_API_SUPPORT_FILTER | SecurityContextHolderAwareFilter | http/@servlet-api-provision |
REMEMBER_ME_FILTER | RememberMeAuthenticationFilter | http/remember-me |
ANONYMOUS_FILTER | AnonymousAuthenticationFilter | http/anonymous |
SESSION_MANAGEMENT_FILTER | SessionManagementFilter | session-management |
EXCEPTION_TRANSLATION_FILTER | ExceptionTranslationFilter | http |
FILTER_SECURITY_INTERCEPTOR | FilterSecurityInterceptor | http |
SWITCH_USER_FILTER | SwitchUserFilter | N/A |
-
FORM_LOGIN_FILTER
는 로그인 시도가 왔을 경우, 성공/실패와 무관하게 기본적으로는 그 뒤에 오는 필터를 실행하지 않고 리턴한다. 따라서 로그인과 관련된 것중 필히 시도해야 하는 것은FORM_LOGIN_FILTER
에 대해 before로 지정해야 한다.
재정의 하는 법
기존 필터를 상속하거나 Filter를 직접 구현하여 Bean 으로 생성한다. 위치 Alias
에는 위 표에 나온 대문자 상수들을 지정한다.
<http ...> <custom-filter ref="생성한필터Bean" 위치지시자="위치Alias" /> </http>
-
위치 지시자
-
before
는 위치 Alias보다 앞에, -
after
는 뒤에 -
position
은 해당 위치에 있는 필터 대체
-
-
추가 위치 Alias
-
FIRST
: 맨 앞 -
LAST
: 맨 뒤
-
-
position
을 사용하는 경우에는auto-config=“false”
로 해서 모든 것을 개발자가 직접 설정 해줘야 한다.