From 55f42fc1534080259502a95b76c02b30c9ecaf63 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Fri, 7 Feb 2020 13:55:07 -0600 Subject: [PATCH] Add High Level Servlet Architecture - Review of Filters - DelegatingFilterProxy - FilterChainProxy - Security Filters Fixes gh-7955 --- .../_includes/servlet/architecture/index.adoc | 170 ++- .../architecture/delegatingfilterproxy.odg | Bin 0 -> 13329 bytes .../architecture/delegatingfilterproxy.svg | 512 ++++++++ .../servlet/architecture/filterchain.odg | Bin 0 -> 12428 bytes .../servlet/architecture/filterchain.svg | 481 ++++++++ .../servlet/architecture/filterchainproxy.odg | Bin 0 -> 15813 bytes .../servlet/architecture/filterchainproxy.svg | 809 +++++++++++++ .../multi-securityfilterchain.odg | Bin 0 -> 16826 bytes .../multi-securityfilterchain.svg | 1060 +++++++++++++++++ 9 files changed, 3028 insertions(+), 4 deletions(-) create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.odg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.svg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.odg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.svg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.odg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.svg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.odg create mode 100644 docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.svg diff --git a/docs/manual/src/docs/asciidoc/_includes/servlet/architecture/index.adoc b/docs/manual/src/docs/asciidoc/_includes/servlet/architecture/index.adoc index 47590edfe7..4a9b4a4cb5 100644 --- a/docs/manual/src/docs/asciidoc/_includes/servlet/architecture/index.adoc +++ b/docs/manual/src/docs/asciidoc/_includes/servlet/architecture/index.adoc @@ -1,8 +1,170 @@ -[[overall-architecture]] +[[servlet-architecture]] = Architecture and Implementation -Once you are familiar with setting up and running some namespace-configuration based applications, you may wish to develop more of an understanding of how the framework actually works behind the namespace facade. -Like most software, Spring Security has certain central interfaces, classes and conceptual abstractions that are commonly used throughout the framework. -In this part of the reference guide we will look at some of these and see how they work together to support authentication and access-control within Spring Security. +:figures: images/servlet/architecture + +This section discusses Spring Security's high level architecture within Servlet based applications. +We build on this high level understanding within each section of the reference. +// FIXME: Add links to other sections of architecture + +[[servlet-filters-review]] +== A Review of ``Filter``s + +Spring Security's Servlet support is based on Servlet ``Filter``s, so it is helpful to look at the role of ``Filter``s generally first. +The picture below shows the typical layering of the handlers for a single HTTP request. + +.FilterChain +[[servlet-filterchain-figure]] +image::{figures}/filterchain.svg[] + +The client sends a request to the application, and the container creates a `FilterChain` which contains the ``Filter``s and `Servlet` that should process the `HttpServletRequest` based on the path of the request URI. +At most one `Servlet` can handle a single `HttpServletRequest` and `HttpServletResponse`. +However, more than one `Filter` can be used to: + +* Prevent downstream ``Filter``s or the `Servlet` from being invoked. +In this instance the `Filter` will typically write the `HttpServletResponse`. +* Modify the `HttpServletRequest` or `HttpServletResponse` used by the downstream ``Filter``s and `Servlet` + +The power of the `Filter` comes from the `FilterChain` that is passed into it. + +.`FilterChain` Usage Example +==== +[source,java] +---- +public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { + // do something before the rest of the application + chain.doFilter(request, response); // invoke the rest of the application + // do something after the rest of the application +} +---- +==== + +Since a `Filter` only impacts downstream ``Filter``s and the `Servlet`, the order each `Filter` is invoked is extremely important. + +[[servlet-delegatingfilterproxy]] +== DelegatingFilterProxy + +Spring provides a `Filter` implementation named `DelegatingFilterProxy` that allows bridging between the Servlet container's lifecycle and Spring's `ApplicationContext`. +The Servlet container allows registering ``Filter``s using its own standards, but it is not aware of Spring defined Beans. +`DelegatingFilterProxy` can be registered via standard Servlet container mechanisms, but delegate all the work to a Spring Bean that implements `Filter`. + +Here is a picture of how `DelegatingFilterProxy` fits into the <>. + +.DelegatingFilterProxy +[[servlet-delegatingfilterproxy-figure]] +image::{figures}/delegatingfilterproxy.svg[] + +`DelegatingFilterProxy` looks up __Bean Filter~0~__ from the `ApplicationContext` and then invokes __Bean Filter~0~__. +The pseudo code of `DelegatingFilterProxy` can be seen below. + +.`DelegatingFilterProxy` Pseudo Code +==== +[source,java,subs="+quotes,+macros"] +---- +public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { + // Lazily get Filter that was registered as a Spring Bean + // For the example in <> `delegate` is an instance of __Bean Filter~0~__ + Filter delegate = getFilterBean(someBeanName); + // delegate work to the Spring Bean + delegate.doFilter(request, response); +} +---- +==== + +Another benefit of `DelegatingFilterProxy` is that it allows delaying looking `Filter` bean instances. +This is important because the container needs to register the `Filter` instances before the container can startup. +However, Spring typically uses a `ContextLoaderListener` to load the Spring Beans which will not be done until after the `Filter` instances need to be registered. + +[[servlet-filterchainproxy]] +== FilterChainProxy + +Spring Security's Servlet support is contained within `FilterChainProxy`. +`FilterChainProxy` is a special `Filter` provided by Spring Security that allows delegating to many `Filter` instances through the `SecurityFilterChain` API. +// FIXME: link to SecurityFilterChain +Since `FilterChainProxy` is a Bean, it is typically wrapped in a <>. + +.FilterChainProxy +[[servlet-filterchainproxy-figure]] +image::{figures}/filterchainproxy.svg[] + +The <> in `SecurityFilterChain` are typically Beans, but they are registered with `FilterChainProxy` instead of <>. +`FilterChainProxy` provides a number of advantages to registering directly with the Servlet container or <>. +First, it provides a starting point for all of Spring Security's Servlet support. +For that reason, if you are attempting to troubleshoot Spring Security's Servlet support, adding a debug point in `FilterChainProxy` is a great place to start. + +Second, since `FilterChainProxy` is central to Spring Security usage it can perform tasks that are not viewed as optional. +// FIXME: Add a link to SecurityContext +For example, it clears out the `SecurityContext` to avoid memory leaks. +// FIXME: Add a link to HttpFirewall +It also applies Spring Security's `HttpFirewall` to protect applications against certain types of attacks. + +In addition, it provides more flexibility in determining when a `SecurityFilterChain` should be invoked. +// FIXME: Add link to SecurityFitlerChain +In a Servlet container, ``Filter``s are invoked based upon the URL alone. +// FIXME: Link to RequestMatcher +However, `FilterChainProxy` can determine invocation based upon anything in the `HttpServletRequest` by leveraging the `RequestMatcher` interface. + +In fact, `FilterChainProxy` can be used to determine which `SecurityFilterChain` should be used. +This allows providing a totally separate configuration for different _slices_ if your application. + +.Multiple SecurityFilterChain +[[servlet-multi-securityfilterchain-figure]] +image::{figures}/multi-securityfilterchain.svg[] + +In the <> Figure `FilterChainProxy` decides which `SecurityFilterChain` should be used. +Only the first `SecurityFilterChain` that matches will be invoked. +If a URL of `/api/messages/` is requested, it will first match on ``SecurityFilterChain~0~``'s pattern of `+/api/**+`, so only `SecurityFilterChain~0~` will be invoked even though it also matches on ``SecurityFilterChain~n~``. +If a URL of `/messages/` is requested, it will not match on ``SecurityFilterChain~0~``'s pattern of `+/api/**+`, so `FilterChainProxy` will continue trying each `SecurityFilterChain`. +Assuming that no other, `SecurityFilterChain` instances match `SecurityFilterChain~n~` will be invoked. +// FIXME add link to pattern matching + +Notice that `SecurityFilterChain~0~` has only three security ``Filter``s instances configured. +However, `SecurityFilterChain~n~` has four security ``Filter``s configured. +It is important to note that each `SecurityFilterChain` can be unique and configured in isolation. +In fact, a `SecurityFilterChain` might have zero security ``Filter``s if the application wants Spring Security to ignore certain requests. +// FIXME: add link to configuring multiple `SecurityFilterChain` instances + +[[servlet-security-filters]] +== Security Filters + +The <>s matters. +It is typically not necessary to know the ordering of Spring Security's ``Filter``s. +However, there are times that it is beneficial to know the ordering + +Below is a comprehensive list of Spring Security Filter ordering: + +* ChannelProcessingFilter +* ConcurrentSessionFilter +* WebAsyncManagerIntegrationFilter +* SecurityContextPersistenceFilter +* HeaderWriterFilter +* CorsFilter +* CsrfFilter +* LogoutFilter +* OAuth2AuthorizationRequestRedirectFilter +* Saml2WebSsoAuthenticationRequestFilter +* X509AuthenticationFilter +* AbstractPreAuthenticatedProcessingFilter +* CasAuthenticationFilter +* OAuth2LoginAuthenticationFilter +* Saml2WebSsoAuthenticationFilter +* UsernamePasswordAuthenticationFilter +* ConcurrentSessionFilter +* OpenIDAuthenticationFilter +* DefaultLoginPageGeneratingFilter +* DefaultLogoutPageGeneratingFilter +* DigestAuthenticationFilter +* BearerTokenAuthenticationFilter +* BasicAuthenticationFilter +* RequestCacheAwareFilter +* SecurityContextHolderAwareRequestFilter +* JaasApiIntegrationFilter +* RememberMeAuthenticationFilter +* AnonymousAuthenticationFilter +* OAuth2AuthorizationCodeGrantFilter +* SessionManagementFilter +* ExceptionTranslationFilter +* FilterSecurityInterceptor +* SwitchUserFilter include::technical-overview.adoc[] diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.odg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.odg new file mode 100644 index 0000000000000000000000000000000000000000..8b0ea3429668418b8ffb179138a3428035d35af4 GIT binary patch literal 13329 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 literal 0 HcmV?d00001 diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.svg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.svg new file mode 100644 index 0000000000..8a604f0288 --- /dev/null +++ b/docs/manual/src/docs/asciidoc/images/servlet/architecture/delegatingfilterproxy.svg @@ -0,0 +1,512 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelegatingFilterProxy + + + + DelegatingFilterProxy + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + Client + + + + + + + + + + + + + + + + + + + + + + + + Servlet + + + + Servlet + + + + + + + + + + + + + + + + + + + + + + + + Filter0 + + + + Filter0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Filter2 + + + + Filter2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FilterChain + + + + + + + + Bean Filter0 + + + + + + + + \ No newline at end of file diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.odg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.odg new file mode 100644 index 0000000000000000000000000000000000000000..10b599eb528b3d2fafdeaf4f59e9ded70283204d GIT binary patch literal 12428 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 Df`nK8 literal 0 HcmV?d00001 diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.svg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.svg new file mode 100644 index 0000000000..1bf2ec997f --- /dev/null +++ b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchain.svg @@ -0,0 +1,481 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Filter1 + + + + Filter1 + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + Client + + + + + + + + + + + + + + + + + + + + + + + + Servlet + + + + Servlet + + + + + + + + + + + + + + + + + + + + + + + + Filter0 + + + + Filter0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Filter2 + + + + Filter2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FilterChain + + + + + + + + \ No newline at end of file diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.odg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.odg new file mode 100644 index 0000000000000000000000000000000000000000..956b74ec19e735bc7447c9db43055c0c665744a8 GIT binary patch literal 15813 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 literal 0 HcmV?d00001 diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.svg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.svg new file mode 100644 index 0000000000..0a860fc95d --- /dev/null +++ b/docs/manual/src/docs/asciidoc/images/servlet/architecture/filterchainproxy.svg @@ -0,0 +1,809 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelegatingFilterProxy + + + + DelegatingFilterProxy + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + Client + + + + + + + + + + + + + + + + + + + + + + + + Servlet + + + + Servlet + + + + + + + + + + + + + + + + + + + + + + + + Filter0 + + + + Filter0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Filter2 + + + + Filter2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FilterChain + + + + + + + + FilterChainProxy + + + + + + + + + + + + + + + + + + + + + + + + Security Filter0 + + + + Security Filter0 + + + + + + + + + + + + + + + + + + + + + + + + Security Filtern + + + + Security Filtern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SecurityFilterChain + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.odg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.odg new file mode 100644 index 0000000000000000000000000000000000000000..6463ca1782c3310a8a6a79d43642accad325bf84 GIT binary patch literal 16826 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 E0HcDpX8-^I literal 0 HcmV?d00001 diff --git a/docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.svg b/docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.svg new file mode 100644 index 0000000000..a58cb2fb05 --- /dev/null +++ b/docs/manual/src/docs/asciidoc/images/servlet/architecture/multi-securityfilterchain.svg @@ -0,0 +1,1060 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelegatingFilterProxy + + + + DelegatingFilterProxy + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + Client + + + + + + + + + + + + + + + + + + + + + + + + Servlet + + + + Servlet + + + + + + + + + + + + + + + + + + + + + + + + Filter0 + + + + Filter0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Filter2 + + + + Filter2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FilterChain + + + + + + + + FilterChainProxy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SecurityFilterChain0 + + + + + + + + + + + + + + + + + + + + + + + + + + + /api/** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SecurityFilterChainn + + + + + + + + + + + + + + + + + + + + /** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file