java - 如何继承OAuth2AuthenticationProcessingFilter或添加自定义过滤器

标签 java spring spring-security spring-security-oauth2

我在基于 REST 的 API 中使用 OAuth2 token 。我想重写 OAuth2AuthenticationProcessingFilter ,以便我可以提取 token (如果不是 header 属性中的提供程序作为授权)(这可以作为 header 长篇故事中的 accessToken 属性提供,不要问为什么)。 或者 如果没有那么谁能告诉我如何在 OAuth2AuthenticationProcessingFilter 之后添加另一个过滤器?

最佳答案

基本上,在 XML 中,要使用默认值,您可以添加 resource-server

<oauth:resource-server id="resourceServerFilter"
        token-services-ref="tokenServices"
        resource-id="myId" />

其中添加了 OAuth2AuthenticationManagerOAuth2AuthenticationProcessingFilter (详情请参阅https://github.com/spring-projects/spring-security-oauth/blob/ec215f79f4f73f8bb5d4b8a3ff9abe15b3335866/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/config/xml/ResourceServerBeanDefinitionParser.java)

然后将该过滤器添加到您的 <sec:http> 中元素:

<sec:custom-filter ref="resourceServerFilter" position="PRE_AUTH_FILTER" />

但是如果你需要使用OAuth2AuthenticationProcessingFilter特化而不是 OAuth2AuthenticationProcessingFilter本身,您可以执行以下操作:

我。添加OAuth2AuthenticationManager手动:

<bean id="authenticationManager" class="org.springframework.security.oauth2.config.xml.OAuth2AuthenticationManager">
    <property name="tokenServices" ref="tokenServices"/>
    <property name="resourceId" value="myId"/>
</bean>

二.手动添加过滤器替换件:

<bean id="resourceServerFilter"class="YourFilterImplementationClass">
    <property name="authenticationManager" ref="authenticationManager"/>
</bean>

三.像往常一样将过滤器插入过滤器链:

<sec:custom-filter ref="resourceServerFilter" position="PRE_AUTH_FILTER" />

关于java - 如何继承OAuth2AuthenticationProcessingFilter或添加自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43413562/

相关文章:

java - 将多个 ArrayList 对象的所有元素添加到单个 ArrayList 对象中

java - hibernate 中的并发更新处理

java - 商业Web应用平台架构

java - 为什么hibernate删除操作不起作用?

java - Spring security - 更改/登录默认路径

java - 在服务器端设置基本身份验证

java - 从书中复制代码错误

java - BufferedOutputStream 写入垃圾数据

grails - Grails Spring Security:在双角色之间切换

java - 如何在 Dropwizard 项目中使用 Couchbase Java 客户端?