Browse Source

Add Bearer Token filter to Security Filters

This introduces BearerTokenAuthenticationFilter to SecurityFilters so
that it can be used in the various addFilter methods and with the
`custom-filter` xml tag.

Fixes: gh-5479
pull/5522/merge
Josh Cummings 8 years ago committed by Rob Winch
parent
commit
884fdbf9b3
  1. 1
      config/src/main/java/org/springframework/security/config/annotation/web/HttpSecurityBuilder.java
  2. 4
      config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterComparator.java
  3. 3
      config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/resource/OAuth2ResourceServerConfigurer.java
  4. 1
      config/src/main/java/org/springframework/security/config/http/SecurityFilters.java
  5. 2
      config/src/main/resources/org/springframework/security/config/spring-security-5.1.rnc
  6. 1
      config/src/main/resources/org/springframework/security/config/spring-security-5.1.xsd

1
config/src/main/java/org/springframework/security/config/annotation/web/HttpSecurityBuilder.java

@ -149,6 +149,7 @@ public interface HttpSecurityBuilder<H extends HttpSecurityBuilder<H>> extends @@ -149,6 +149,7 @@ public interface HttpSecurityBuilder<H extends HttpSecurityBuilder<H>> extends
* <li>{@link org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter}</li>
* <li>{@link ConcurrentSessionFilter}</li>
* <li>{@link DigestAuthenticationFilter}</li>
* <li>{@link org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter}</li>
* <li>{@link BasicAuthenticationFilter}</li>
* <li>{@link RequestCacheAwareFilter}</li>
* <li>{@link SecurityContextHolderAwareRequestFilter}</li>

4
config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterComparator.java

@ -19,7 +19,6 @@ import java.io.Serializable; @@ -19,7 +19,6 @@ import java.io.Serializable;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.Filter;
import org.springframework.security.web.access.ExceptionTranslationFilter;
@ -108,6 +107,9 @@ final class FilterComparator implements Comparator<Filter>, Serializable { @@ -108,6 +107,9 @@ final class FilterComparator implements Comparator<Filter>, Serializable {
order += STEP;
put(DigestAuthenticationFilter.class, order);
order += STEP;
filterToOrder.put(
"org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter", order);
order += STEP;
put(BasicAuthenticationFilter.class, order);
order += STEP;
put(RequestCacheAwareFilter.class, order);

3
config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/resource/OAuth2ResourceServerConfigurer.java

@ -33,7 +33,6 @@ import org.springframework.security.oauth2.server.resource.web.BearerTokenAuthen @@ -33,7 +33,6 @@ import org.springframework.security.oauth2.server.resource.web.BearerTokenAuthen
import org.springframework.security.oauth2.server.resource.web.BearerTokenResolver;
import org.springframework.security.oauth2.server.resource.web.DefaultBearerTokenResolver;
import org.springframework.security.oauth2.server.resource.web.access.BearerTokenAccessDeniedHandler;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
import org.springframework.security.web.util.matcher.RequestMatcher;
import org.springframework.util.Assert;
@ -132,7 +131,7 @@ public final class OAuth2ResourceServerConfigurer<H extends HttpSecurityBuilder< @@ -132,7 +131,7 @@ public final class OAuth2ResourceServerConfigurer<H extends HttpSecurityBuilder<
filter.setBearerTokenResolver(bearerTokenResolver);
filter = postProcess(filter);
http.addFilterBefore(filter, BasicAuthenticationFilter.class);
http.addFilter(filter);
JwtDecoder decoder = this.jwtConfigurer.getJwtDecoder();

1
config/src/main/java/org/springframework/security/config/http/SecurityFilters.java

@ -42,6 +42,7 @@ enum SecurityFilters { @@ -42,6 +42,7 @@ enum SecurityFilters {
LOGIN_PAGE_FILTER,
LOGOUT_PAGE_FILTER,
DIGEST_AUTH_FILTER,
BEARER_TOKEN_AUTH_FILTER,
BASIC_AUTH_FILTER,
REQUEST_CACHE_FILTER,
SERVLET_API_SUPPORT_FILTER,

2
config/src/main/resources/org/springframework/security/config/spring-security-5.1.rnc

@ -906,4 +906,4 @@ position = @@ -906,4 +906,4 @@ position =
## The explicit position at which the custom-filter should be placed in the chain. Use if you are replacing a standard filter.
attribute position {named-security-filter}
named-security-filter = "FIRST" | "CHANNEL_FILTER" | "SECURITY_CONTEXT_FILTER" | "CONCURRENT_SESSION_FILTER" | "WEB_ASYNC_MANAGER_FILTER" | "HEADERS_FILTER" | "CORS_FILTER" | "CSRF_FILTER" | "LOGOUT_FILTER" | "X509_FILTER" | "PRE_AUTH_FILTER" | "CAS_FILTER" | "FORM_LOGIN_FILTER" | "OPENID_FILTER" | "LOGIN_PAGE_FILTER" |"LOGOUT_PAGE_FILTER" | "DIGEST_AUTH_FILTER" | "BASIC_AUTH_FILTER" | "REQUEST_CACHE_FILTER" | "SERVLET_API_SUPPORT_FILTER" | "JAAS_API_SUPPORT_FILTER" | "REMEMBER_ME_FILTER" | "ANONYMOUS_FILTER" | "SESSION_MANAGEMENT_FILTER" | "EXCEPTION_TRANSLATION_FILTER" | "FILTER_SECURITY_INTERCEPTOR" | "SWITCH_USER_FILTER" | "LAST"
named-security-filter = "FIRST" | "CHANNEL_FILTER" | "SECURITY_CONTEXT_FILTER" | "CONCURRENT_SESSION_FILTER" | "WEB_ASYNC_MANAGER_FILTER" | "HEADERS_FILTER" | "CORS_FILTER" | "CSRF_FILTER" | "LOGOUT_FILTER" | "X509_FILTER" | "PRE_AUTH_FILTER" | "CAS_FILTER" | "FORM_LOGIN_FILTER" | "OPENID_FILTER" | "LOGIN_PAGE_FILTER" |"LOGOUT_PAGE_FILTER" | "DIGEST_AUTH_FILTER" | "BEARER_TOKEN_AUTH_FILTER" | "BASIC_AUTH_FILTER" | "REQUEST_CACHE_FILTER" | "SERVLET_API_SUPPORT_FILTER" | "JAAS_API_SUPPORT_FILTER" | "REMEMBER_ME_FILTER" | "ANONYMOUS_FILTER" | "SESSION_MANAGEMENT_FILTER" | "EXCEPTION_TRANSLATION_FILTER" | "FILTER_SECURITY_INTERCEPTOR" | "SWITCH_USER_FILTER" | "LAST"

1
config/src/main/resources/org/springframework/security/config/spring-security-5.1.xsd

@ -2721,6 +2721,7 @@ @@ -2721,6 +2721,7 @@
<xs:enumeration value="LOGIN_PAGE_FILTER"/>
<xs:enumeration value="LOGOUT_PAGE_FILTER"/>
<xs:enumeration value="DIGEST_AUTH_FILTER"/>
<xs:enumeration value="BEARER_TOKEN_AUTH_FILTER"/>
<xs:enumeration value="BASIC_AUTH_FILTER"/>
<xs:enumeration value="REQUEST_CACHE_FILTER"/>
<xs:enumeration value="SERVLET_API_SUPPORT_FILTER"/>

Loading…
Cancel
Save