Thanks for your reply
Doesn't work using name in the filter chain <http> and filter-chain-ref with many <http> . Always survives the last <oauth: provider configuration.
I think that is a bug.
Each <http> filter chain calls an OAuthProviderBeanDefinitionParser, and i found
Code:
public BeanDefinition parse(Element element, ParserContext parserContext) {
(...)
List<BeanMetadataElement> filterChain = ConfigUtils.findFilterChain(parserContext, element.getAttribute("filter-chain-ref"));
int index = insertIndex(filterChain);
parserContext.getRegistry().registerBeanDefinition("oauthRequestTokenFilter", requestTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthRequestTokenFilter"));
parserContext.getRegistry().registerBeanDefinition("oauthAuthenticateTokenFilter", authenticateTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthAuthenticateTokenFilter"));
parserContext.getRegistry().registerBeanDefinition("oauthAccessTokenFilter", accessTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthAccessTokenFilter"));
parserContext.getRegistry().registerBeanDefinition("oauthProtectedResourceFilter", protectedResourceFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthProtectedResourceFilter"));
return null;
}
I seem to it's always the same beanName
I changed the last part for this code
Code:
String attribute = element.getAttribute("filter-chain-ref");
List<BeanMetadataElement> filterChain = ConfigUtils.findFilterChain(parserContext, element.getAttribute("filter-chain-ref"));
int index = insertIndex(filterChain);
parserContext.getRegistry().registerBeanDefinition("oauthRequestTokenFilter_" + attribute, requestTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthRequestTokenFilter_" + attribute));
parserContext.getRegistry().registerBeanDefinition("oauthAuthenticateTokenFilter_" + attribute, authenticateTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthAuthenticateTokenFilter_" + attribute));
parserContext.getRegistry().registerBeanDefinition("oauthAccessTokenFilter_" + attribute, accessTokenFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthAccessTokenFilter_" + attribute));
parserContext.getRegistry().registerBeanDefinition("oauthProtectedResourceFilter_" + attribute, protectedResourceFilterBean.getBeanDefinition());
filterChain.add(index++, new RuntimeBeanReference("oauthProtectedResourceFilter_" + attribute));
return null;
}
And seems to work
I'm going to open a Jira ticket