config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java
public HttpSecurity addFilterAt(Filter filter, Class<? extends Filter> atFilter) {
		this.comparator.registerAt(filter.getClass(), atFilter);
		return addFilter(filter);
	}
public HttpSecurity addFilterAt(Filter filter, Class<? extends Filter> atFilter) {
		this.comparator.registerAt(filter.getClass(), atFilter);
		return addFilter(filter);
	}
Adds the Filter at the location of the specified Filter class. For example, if you
want the filter CustomFilter to be registered in the same position as
{@link UsernamePasswordAuthenticationFilter}, you can invoke:

<pre>
addFilterAt(new CustomFilter(), UsernamePasswordAuthenticationFilter.class)
</pre>

Registration of multiple Filters in the same location means their ordering is not
deterministic. More concretely, registering multiple Filters in the same location
does not override existing Filters. Instead, do not register Filters you do not
want to use.

@param filter the Filter to register
@param atFilter the location of another {@link Filter} that is already registered
(i.e. known) with Spring Security.
@return the {@link HttpSecurity} for further customizations