스프링 보안 필터 체인의 구조
Spring security build on filters(필터 체인에 의한 보안 빌드)는 요구를 대행 수신하고 인증 엔트리 포인트로 리다이렉트하거나 인가 서비스에 요구를 전달하여 최종적으로 요구가 서블릿에 히트하거나 보안 예외(미인증 또는 무허가)를 발생시키는 것을 알고 있습니다.Fitler Proxy를 위임하면 이러한 필터가 함께 접착됩니다.작업을 수행하기 위해 UserDetailsService 및 AuthenticationManager 등의 액세스서비스를 필터링합니다.
체인의 주요 필터는 (순서대로)
- SecurityContextPersistenceFilter(JSESSIONID에서 인증을 복원합니다)
- Username PasswordAuthentication Filter(인증 실행)
- ExceptionTranslationFilter(FilterSecurity에서 보안 예외를 캐치)인터셉터)
- 필터 보안대행 수신자(인증 및 인가 예외가 발생할 수 있음)
나는 이 필터들이 어떻게 사용되는지 헷갈린다.Spring 제공 폼로그인, Username Password가 있습니까?Authentication Filter는 /login에만 사용되며 후자의 필터는 사용되지 않습니까?form-login namespace 요소에 의해 이러한 필터가 자동으로 설정됩니까?모든 요구(인증 여부)가 FilterSecurity에 도달합니까?로그인하지 않은 URL에 대한 인터셉터?
로그인을 통해 취득된 REST API를 JWT-token으로 보호하려면 어떻게 해야 합니까?두 개의 네임스페이스 구성을 구성해야 합니다.http
태그, 권리?/로그인용 1개UsernamePasswordAuthenticationFilter
및 의 는, 커스텀, 「REST URL」, 「REST URL」을 합니다.JwtAuthenticationFilter
.
의 2개의 2개의 설정이 있습니까?http
는 2개의 '2'를 .springSecurityFitlerChains
? ? ??UsernamePasswordAuthenticationFilter
상태로, 「 off」라고 까지,form-login
교환 방법SecurityContextPersistenceFilter
에 의해, 「」를 합니다.Authentication
존존 existing existing JWT-token
JSESSIONID
스프링 보안 필터 체인은 매우 복잡하고 유연한 엔진입니다.
체인의 주요 필터는 (순서대로)
- SecurityContextPersistenceFilter(JSESSIONID에서 인증을 복원합니다)
- Username PasswordAuthentication Filter(인증 실행)
- ExceptionTranslationFilter(FilterSecurity에서 보안 예외를 캐치)인터셉터)
- 필터 보안대행 수신자(인증 및 인가 예외가 발생할 수 있음)
현재 안정적인 릴리스 4.2.1 매뉴얼, 섹션 13.3 필터 순서 지정에서 필터 체인 전체의 필터 구성을 확인할 수 있습니다.
13.3 필터 주문
필터가 체인에 정의되는 순서는 매우 중요합니다.실제로 사용하고 있는 필터에 관계없이, 순서는 다음과 같습니다.
Channel Processing Filter(다른 프로토콜로 리디렉션해야 할 수 있음)
SecurityContextPersistenceFilter. 따라서 SecurityContext는 웹 요청 시작 시 SecurityContextHolder로 설정할 수 있으며 SecurityContext에 대한 변경은 웹 요청이 종료될 때 HttpSession에 복사할 수 있습니다(다음 웹 요청과 함께 사용할 수 있습니다).
ConcurrentSessionFilter: SecurityContextHolder 기능을 사용하여 주체로부터의 진행 중인 요청을 반영하도록 SessionRegistry를 업데이트해야 하기 때문입니다.
인증처리 메커니즘 - Username PasswordAuthenticationFilter, CasAuthenticationFilter, BasicAuthenticationFilter 등 - SecurityContextHolder를 변경하여 유효한 인증요구 토큰을 포함할 수 있도록 합니다.
SecurityContextHolderAwareRequestFilter(Spring 보안 대응HttpServletRequestWrapper를 서블릿컨테이너에 인스톨 하기 위해서 사용하고 있는 SecurityContextHolderAwareRequestFilter
Jaas Api Integration Filter(Jaas인 경우)인증토큰은 SecurityContextHolder에 있습니다.이것에 의해, Jaas 의 서브젝트로서 FilterChain 가 처리됩니다.인증상품권
리멤버미AuthenticationFilter: 이전 인증처리 메커니즘이 SecurityContextHolder를 업데이트하지 않고 요구에 따라 Remember-Me 서비스를 실행할 수 있는 쿠키가 나타나면 기억된 인증 객체가 적절히 배치됩니다.
익명AuthenticationFilter: 이전 인증 처리 메커니즘이 SecurityContextHolder를 업데이트하지 않은 경우 익명 인증 개체가 여기에 배치됩니다.
ExceptionTranslationFilter: HTTP 오류 응답을 반환하거나 적절한 AuthenticationEntryPoint를 시작할 수 있도록 Spring Security 예외를 검출합니다.
필터 보안Interceptor: 웹 URI를 보호하고 액세스가 거부될 때 예외를 발생시킵니다.
이제 질문을 하나씩 진행하겠습니다.
나는 이 필터들이 어떻게 사용되는지 헷갈린다.Spring 제공 폼로그인, Username Password가 있습니까?Authentication Filter는 /login에만 사용되며 후자의 필터는 사용되지 않습니까?form-login namespace 요소에 의해 이러한 필터가 자동으로 설정됩니까?모든 요구(인증 여부)가 FilterSecurity에 도달합니까?로그인하지 않은 URL에 대한 인터셉터?
「 」를 는,<security-http>
각 섹션마다 적어도1개의 인증 메커니즘을 지정해야 합니다.이것은 방금 참조한 Spring Security 문서의 "13.3 필터 순서" 섹션의 그룹 4와 일치하는 필터 중 하나여야 합니다.
설정할 수 있는 최소 유효한 보안:http 요소는 다음과 같습니다.
<security:http authentication-manager-ref="mainAuthenticationManager"
entry-point-ref="serviceAccessDeniedHandler">
<security:intercept-url pattern="/sectest/zone1/**" access="hasRole('ROLE_ADMIN')"/>
</security:http>
필터 체인 프록시로 다음의 필터를 설정합니다.
{
"1": "org.springframework.security.web.context.SecurityContextPersistenceFilter",
"2": "org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter",
"3": "org.springframework.security.web.header.HeaderWriterFilter",
"4": "org.springframework.security.web.csrf.CsrfFilter",
"5": "org.springframework.security.web.savedrequest.RequestCacheAwareFilter",
"6": "org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter",
"7": "org.springframework.security.web.authentication.AnonymousAuthenticationFilter",
"8": "org.springframework.security.web.session.SessionManagementFilter",
"9": "org.springframework.security.web.access.ExceptionTranslationFilter",
"10": "org.springframework.security.web.access.intercept.FilterSecurityInterceptor"
}
주의: 심플한 RestController를 생성하여 FilterChainProxy에 @Autowires하고 내용을 반환합니다.
@Autowired
private FilterChainProxy filterChainProxy;
@Override
@RequestMapping("/filterChain")
public @ResponseBody Map<Integer, Map<Integer, String>> getSecurityFilterChainProxy(){
return this.getSecurityFilterChainProxy();
}
public Map<Integer, Map<Integer, String>> getSecurityFilterChainProxy(){
Map<Integer, Map<Integer, String>> filterChains= new HashMap<Integer, Map<Integer, String>>();
int i = 1;
for(SecurityFilterChain secfc : this.filterChainProxy.getFilterChains()){
//filters.put(i++, secfc.getClass().getName());
Map<Integer, String> filters = new HashMap<Integer, String>();
int j = 1;
for(Filter filter : secfc.getFilters()){
filters.put(j++, filter.getClass().getName());
}
filterChains.put(i++, filters);
}
return filterChains;
}
에서는 이렇게 만으로 알 수 .<security:http>
최소 설정이 1개인 요소에는 모든 기본 필터가 포함되지만 인증 유형(13.3 필터 순서 섹션의 네 번째 그룹)은 없습니다., 는, 「」를 만으로, 「」는 「」라고 하는 이 됩니다.security:http
및 , SecurityContextPersistenceFilter, ExceptionTranslationFilter, FilterSecurity대행 수신기가 자동으로 설정됩니다.
네임스페이스 이 클레임이 발생하며 시 하지만 을 1에 추가하는 할 수 .보안 네임스페이스에서도 그 처리 클레임이 발생하므로 기동 시에 에러가 발생하지만 entry-point-ref Atribute를 추가하는 것을 우회할 수 있습니다.<http:security>
을 <form-login>
뭇매를 맞다
<security:http authentication-manager-ref="mainAuthenticationManager">
<security:intercept-url pattern="/sectest/zone1/**" access="hasRole('ROLE_ADMIN')"/>
<security:form-login />
</security:http>
filterChain은 다음과 같습니다.
{
"1": "org.springframework.security.web.context.SecurityContextPersistenceFilter",
"2": "org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter",
"3": "org.springframework.security.web.header.HeaderWriterFilter",
"4": "org.springframework.security.web.csrf.CsrfFilter",
"5": "org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter",
"6": "org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter",
"7": "org.springframework.security.web.savedrequest.RequestCacheAwareFilter",
"8": "org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter",
"9": "org.springframework.security.web.authentication.AnonymousAuthenticationFilter",
"10": "org.springframework.security.web.session.SessionManagementFilter",
"11": "org.springframework.security.web.access.ExceptionTranslationFilter",
"12": "org.springframework.security.web.access.intercept.FilterSecurityInterceptor"
}
이 두 필터는 org.springframework입니다.보안.web.authentication 입니다.Username PasswordAuthenticationFilter 및 org.springframework.보안.web.authentication.ui 를 지정합니다.Default Login Page Generating Filter 는 Filter Chain Proxy 로 작성 및 설정됩니다.
자, 이제 질문하겠습니다.
Spring 제공 폼로그인, Username Password가 있습니까?Authentication Filter는 /login에만 사용되며 후자의 필터는 사용되지 않습니까?
네, 요청이 Username Password와 일치하는 경우 로그인 처리 메커니즘을 완료하기 위해 사용됩니다.AuthenticationFilter URL.이 URL은 모든 요청에 일치하도록 구성하거나 동작을 변경할 수 있습니다.
같은 FilterchainProxy(HttpBasic, CAS 등)에 복수의 인증처리 메커니즘을 설정할 수도 있습니다.
form-login namespace 요소에 의해 이러한 필터가 자동으로 설정됩니까?
아니요. form-login 요소는 Username Password를 설정합니다.AUthenicationFilter 및 로그인 페이지 URL을 제공하지 않는 경우 org.springframework도 설정합니다.보안.web.authentication.ui 를 지정합니다.Default Login Page Generating Filter :단순 자동 생성 로그인 페이지로 종료됩니다.
의 필터는, 에서는, 「다」를하는 것만으로 됩니다.<security:http>
「」가 security:"none"
여하하다
모든 요구(인증 여부)가 FilterSecurity에 도달합니까?로그인하지 않은 URL에 대한 인터셉터?
모든 요청은 요청된 URL에 도달할 수 있는 권한이 있는지 여부를 처리하는 요소이기 때문에 모든 요청에 도달해야 합니다. 이전에 중 체인 하지 않을 수 .FilterChain.doFilter(request, response);
예를 들어 요구에 csrf 파라미터가 없는 경우 CSRF 필터가 필터 체인 처리를 정지할 수 있습니다.
REST API JWT-token은 REST API를 사용하고 있습니까?두 개의 네임스페이스 구성 http 태그를 구성해야 합니다. 입니다.
UsernamePasswordAuthenticationFilter
및 의 는, 커스텀, 「REST URL」, 「REST URL」을 합니다.JwtAuthenticationFilter
.
아니요, 당신은 이렇게 강요당하지 않아요. 다 할 수 .UsernamePasswordAuthenticationFilter
및JwtAuthenticationFilter
이 필터의 구체적인 동작에 따라 달라집니다.두 가지 접근 방식 모두 가능하며 어떤 방식을 최종적으로 선택할지는 자신의 선호도에 따라 달라집니다.
2개의 http 요소를 설정하면 2개의 spring Security Fitler Chains가 생성됩니까?
네, 맞아요
사용자 이름 패스워드폼 로그인을 선언할 때까지 Authentication Filter는 기본적으로 꺼집니다.
네, 투고된 각 Configuration의 필터에서 확인할 수 있습니다.
SecurityContextPersistenceFilter를 JSESSIONID가 아닌 기존 JWT-token에서 인증을 얻는 SecurityContextPersistenceFilter로 대체하려면 어떻게 해야 합니까?
SecurityContextPersistenceFilter를 사용하지 않고 세션전략을 설정할 수 있습니다.<http:element>
과 같이 뭇매를 맞다
<security:http create-session="stateless" >
이 에는 다른요. 이렇게 하다 보면 에.★★★★★★★★★★★★★★★★,<security:http>
★★★★
<security:http ...>
<security:custom-filter ref="myCustomFilter" position="SECURITY_CONTEXT_FILTER"/>
</security:http>
<beans:bean id="myCustomFilter" class="com.xyz.myFilter" />
편집:
같은 FilterchainProxy에 여러 인증처리 메커니즘이 설정되어 있을 수 있음에 관한 질문1개복수의 (스프링 실장) 인증 필터를 선언했을 경우, 후자는 첫 번째 인증에 의해 실행되는 인증을 덮어쓰게 됩니까?이것이 복수의 인증 프로바이더를 가지는 것과 어떤 관계가 있습니까?
이것은 최종적으로 각 필터 자체의 실장에 의존하지만, 후자의 인증 필터는 적어도 선행 필터에 의해 최종적으로 행해진 이전의 인증을 덮어쓸 수 있습니다.
하지만 이것은 꼭 일어나지는 않을 것이다.시큐어 REST 서비스에는, HTTP 헤더로서 또는 요구 본문내에 제공할 수 있는 인증 토큰을 사용하는 생산 케이스가 있습니다.따라서 이 토큰을 회복하는2개의 필터를 설정합니다.'Http Header' '1' 'rest' 'request body' 'request body' 'request body' 'request body' 'request body' 'request body' 。, 단순히 의 http의 되었는지 여부를 수 .doFilter()
각 필터의 방식.
인증 필터를 여러 개 갖는 것은 여러 인증 공급자를 갖는 것과 관련이 있지만 강제로 필터를 보유하지는 마십시오.이전에 노출한 경우 인증 필터는 2개이지만 인증 공급자는 1개뿐입니다.두 필터 모두 같은 유형의 인증 개체를 생성하기 때문에 인증 매니저는 이 개체를 동일한 공급자에게 위임합니다.
이와 반대로 Username Password를 1개만 공개하는 시나리오도 있습니다.Authentication Filter 단, 사용자 credential은 모두 DB 또는 LDAP에 포함할 수 있으므로 Username Password가 2개 있습니다.인증토큰 지원 프로바이더 및 AuthenticationManager는 필터에서 프로바이더로 인증 시행을 순차적으로 위임하여 credential을 검증합니다.
따라서 인증 필터의 양이 인증 공급자의 양을 결정하거나 공급자의 양을 결정하지 않는 것은 분명하다고 생각합니다.
또한 문서에는 SecurityContextPersistenceFilter가 SecurityContext의 클리닝을 담당한다고 기재되어 있습니다.이것은 스레드풀링으로 인해 중요합니다.생략하거나 커스텀 실장하면 클리닝은 수동으로 실장해야 하는 거죠?체인을 커스터마이즈 할 때 비슷한 게 더 있나요?
이전에는 이 필터를 주의 깊게 조사하지 않았습니다만, 마지막 질문 후에 실장을 확인했습니다.보통 봄과 같이 거의 모든 것을 설정, 확장 또는 덮어쓸 수 있었습니다.
SecurityContextPersistenceFilter는 SecurityContextRepository 구현에서 SecurityContext 검색을 위임합니다.기본적으로는 HttpSessionSecurityContextRepository가 사용되지만 필터 컨스트럭터 중 하나를 사용하여 변경할 수 있습니다.따라서 사용자의 요구에 맞는 SecurityContextRepository를 작성하여 SecurityContextPersistenceFilter로 구성하는 것이 좋습니다.이것에 대해서는, 처음부터 모든 것을 작성하는 것보다, 실증 끝난 동작을 신뢰해 주세요.
스프링 보안은 필터 기반 프레임워크로 프록시 필터 또는 스프링 관리 콩의 관점에서 애플리케이션 앞에 월(Http FireWall)을 심습니다.API에 도달하려면 요청이 여러 필터를 통과해야 합니다.
스프링 보안에서의 실행 순서
WebAsyncManagerIntegrationFilter
SecurityContext와 Spring Web의 WebAsyncManager 간의 통합을 제공합니다.SecurityContextPersistenceFilter
이 필터는 요구별로1회만 실행됩니다.SecurityContextHolder에 요구 전에 설정된SecurityContextRepository에서 얻은 정보를 채우고 요구가 완료되어 컨텍스트홀더를 클리어하면 저장소에 저장합니다.
기존 세션에 대한 요청이 확인됩니다. 새로운 요구의 경우 SecurityContext가 작성되고, 세션이 있는 요구의 경우 기존 보안 콘텍스트를 Respository에서 가져옵니다.HeaderWriterFilter
현재 응답에 헤더를 추가하는 필터 구현.LogoutFilter
요청 URL이 다음과 같은 경우/logout
) 이 일치하는 ( 「」)의 URL.RequestMatcher
로 되어 있다LogoutConfigurer
그때
- 보안 콘텍스트를 클리어합니다.
- 세션을 무효화하다
- 는 cookie cookie 에서 cookie 되어 있는 를 삭제합니다.
LogoutConfigurer
- URL 「」로.
/
logout success url logout Success Handler 입니다.
UsernamePasswordAuthenticationFilter
- login Processing Url 이외의 요청 URL의 경우 이 필터는 더 이상 처리되지 않지만 필터 체인은 계속됩니다.
- ('URL'이어야 함)
HTTP POST
의 디폴트 「」/login
일치합니다..loginProcessingUrl()
로 되어 있다FormLoginConfigurer
UsernamePasswordAuthenticationFilter
을 사용하다 - 과 패스워드입니다.이 파라미터는 "사용자명"과 "패스워드"로 수 .
usernameParameter(String)
,passwordParameter(String)
. .loginPage()
defaults()- 인증 시행 중
- 목적물
UsernamePasswordAuthenticationToken
「」의 .Authentication
을 사용법 - ★★★★★★★★★★★★★★★★★」
authenticationManager.authenticate(authToken)
를 호출합니다. - 입니다.
AuthenticationProvider
authenticate 메서드는 모든 인증 공급자를 시도하고 인증 공급자의 인증을 체크합니다.토큰/인증 오브젝트, 인증 프로바이더를 지원하는 것이 인증에 사용됩니다.인증에 성공하면 인증 개체를 반환하고 그렇지 않으면 이 오브젝트가 느려집니다.AuthenticationException
.
- 목적물
- 되고 " " " 가 생성되는지 여부
authenticationSuccessHandler
되어 있는 타겟 에 는 「URL」입니다)./
) - 인증에 실패한 사용자가 인증되지 않은 사용자가 되어 체인이 계속되었을 경우.
SecurityContextHolderAwareRequestFilter
하는 경우 Spring Security "Http ServletRequestWrapper"는 "Http ServletRequestWrapper" 입니다AnonymousAuthenticationFilter
찾을 수 없는 경우 SecurityContextHolder 인증을 만듭니다.인증 객체를 찾을 수 없는 경우 다음을 수행합니다.Authentication
오브젝트)AnonymousAuthenticationToken
ROLE_ANONYMOUS
있습니다AnonymousAuthenticationToken
는 미인증 사용자의 후속 요청을 쉽게 식별할 수 있도록 합니다.
디버깅 로그
DEBUG - /app/admin/app-config at position 9 of 12 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
DEBUG - Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@aeef7b36: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'
ExceptionTranslationFilter
하여 HTTP 오류 응답을 반환하거나 적절한 할 수FilterSecurityInterceptor
있을 것이다FilterSecurityInterceptor
의 거의 오브젝트를 합니다.SecurityContext
list가 부여되어 이 할 수 허용할지 요구는 결정은 허용된 권한과 일치하여 이루어집니다.AntMatchers
로 되어 있다HttpSecurityConfiguration
.
및 401-Unauthorized 403-Forbided 403-Forbided 403-Forbided 401-Forbided 403-Forbided 401-Forbided 401-Forbided 401.
- 공용 리소스에 액세스하려고 하는 인증되지 않은 사용자 - 허용됨
- 보안 리소스에 액세스하려고 하는 인증되지 않은 사용자 - 401-Unauthorized
- 인증된 사용자가 제한된 리소스(역할로 제한된 리소스)에 액세스하려고 함 - 403-금지됨
주의: 사용자 요청 흐름은 위의 필터뿐만 아니라 여기에 표시되지 않은 다른 필터도 있습니다.(ConcurrentSessionFilter
,RequestCacheAwareFilter
,SessionManagementFilter
...)
.UsernamePasswordAuthenticationFilter
.
JWT 하고 JWT 인증 필터를 생략하면 ..formLogin() i.e, UsernamePasswordAuthenticationFilter
완전히 다른 경우가 될 것이다.
Just For reference. Filters in spring-web and spring-security
Note: **refer package name in pic**, as there are some other filters from orm and my custom implemented filter.
- Channel Processing Filter
- Concurrent Session Filter(동시 세션 필터)
- Security Context Persistence Filter(보안 콘텍스트 퍼시스텐스 필터)
- 로그아웃 필터
- X509 Authentication Filter(X509 인증 필터)
- Abstract PreAuthenticated Processing Filter(인증필터)
- Cas Authentication Filter(Cas Authentication Filter)
- Username PasswordAuthentication Filter(인증 필터)
- Concurrent Session Filter(동시 세션 필터)
- OpenIDAuthenticationFilter
- DefaultLoginPageGeneratingFilter
- DefaultLogoutPageGeneratingFilter
- Concurrent Session Filter(동시 세션 필터)
- Digest Authentication Filter(다이제스트 인증 필터)
- BearerTokenAuthenticationFilter
- Basic Authentication Filter(기본 인증 필터)
- RequestCacheAwareFilter
- SecurityContextHolderAwareRequestFilter
- Jaas Api Integration Filter
- 리멤버미Authentication Filter(인증 필터)
- 익명Authentication Filter(인증 필터)
- Session Management Filter(세션 관리 필터)
- Exception Translation Filter(예외 변환 필터)
- 필터 보안가로채기
- Switch User Filter(스위치 사용자 필터)
도 있어요.
최신 웹 앱을 인증하는 가장 일반적인 방법?
스프링 시큐리티
UsernamePasswordAuthenticationFilter
에만 사용됩니다./login
는 그렇지 않습니다 「 」 「 」 「 」
아요 no요 。UsernamePasswordAuthenticationFilter
를 확장하다AbstractAuthenticationProcessingFilter
에는, 「」가 포함됩니다RequestMatcher
, URL을 할 수 는, 「」, 「」의 URL만을 합니다.★★★★★★★★★★★★★★★★★★,RequestMatcher
URL과 은 "URL" 입니다.URL을 사용하다/login
할 수 .UsernamePasswordAuthenticationFilter
chain.doFilter(request, response);
.
form-login namespace 요소에 의해 이러한 필터가 자동으로 설정됩니까?
UsernamePasswordAuthenticationFilter
에 의해 됩니다.<form-login>
표준 필터 에일리어스와 오더입니다.
모든 요구(인증 여부)가 FilterSecurity에 도달합니까?로그인하지 않은 URL에 대한 인터셉터?
전에 한 사람의에 따라 , 그 에 착용한 사람의 성공 여부에 따라서는FilterSecurityInterceptor
이치노
2개의 http 요소를 설정하면 2개의 spring Security Fitler Chains가 생성됩니까?
모든 에는 fitler Chain이 .RequestMatcher
의 RequestMatcher
요구와 일치하면 요구는 핏러 체인의 핏러에 의해 처리됩니다.
" " "RequestMatcher
는 패턴을 않은URL)을 할 수 .<http pattern="/rest/**"
를 참조해 주세요.
피틀러에 대해 더 알고 싶다면 스프링 보안에서 소스 코드를 확인할 수 있을 것 같습니다. doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
언급URL : https://stackoverflow.com/questions/41480102/how-spring-security-filter-chain-works
'programing' 카테고리의 다른 글
반환된 JSON 개체 속성을 (작은 첫 번째) camel Case로 변환합니다. (0) | 2023.03.16 |
---|---|
Java에서 JSONObject 쿼리 (0) | 2023.03.16 |
테이블의 행을 angularjs로 정렬 또는 재배치(드래그 앤 드롭) (0) | 2023.03.16 |
WooCommerce:샵에 판매 중인 제품만 표시 (0) | 2023.03.16 |
각도 JS $watch vs $on (0) | 2023.03.16 |