Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring安全性-使用现有FilterChainProxy实现oauth_Spring_Spring Mvc_Oauth_Spring Security - Fatal编程技术网

Spring安全性-使用现有FilterChainProxy实现oauth

Spring安全性-使用现有FilterChainProxy实现oauth,spring,spring-mvc,oauth,spring-security,Spring,Spring Mvc,Oauth,Spring Security,我们已经使用SpringSecurity3.1构建了现有的web应用程序,Wink(用于rest) 我们现在需要为几个资源添加oauth2(客户机_凭证流),我查看了许多示例,所有示例都使用Http命名空间配置和spring dispatcher servlet(到目前为止还没有) 问题是http名称空间正在创建一个springSecurityFilterChain,我们在应用程序中已经有了它,所以我首先重命名了现有的过滤器,这样默认的过滤器就可以与旧的过滤器共存。 但这不起作用,要么是现有的请

我们已经使用SpringSecurity3.1构建了现有的web应用程序,Wink(用于rest) 我们现在需要为几个资源添加oauth2(客户机_凭证流),我查看了许多示例,所有示例都使用Http命名空间配置和spring dispatcher servlet(到目前为止还没有)

问题是http名称空间正在创建一个springSecurityFilterChain,我们在应用程序中已经有了它,所以我首先重命名了现有的过滤器,这样默认的过滤器就可以与旧的过滤器共存。 但这不起作用,要么是现有的请求链,要么是新的请求链。 我已经尝试了以下方法
1.通过提供空的配置位置(在web.xml中)禁用了dispatcher servlet上下文 2.已尝试在application-context.xml中配置oauth(位于现有FilterChainProxy的右侧)
3.允许现有链中的/oauth/令牌,方法是将其筛选器设置为“无”(以便新的可以接管)
4.试图在现有链中声明oauth筛选器,但其未获得正确的clientAuthentication时出现问题


我真的不知道还有什么可以尝试的——所以问题是:有没有可能在同一个webapp中声明这两个?或者可以用旧的方式声明oauth2配置

谢谢
Shlomi

我最终成功地做到了这一点,使API(受oauth保护)将url与应用程序的其余部分完全分离。 因此Http名称空间正在创建SpringSecurityFilterChainbean,而其他名称只是具有不同的bean名称。每个人都通过web.xml中的DelegatingProxy进行委派

我需要将API URL前缀放入其他链中,并允许所有请求通过,让oauth安全通道处理安全问题。 (即过滤器链模式=“/api/**”过滤器=“无”)

关于绑定到SpringMVC的SpringOAuth2,我认为这不是一个好的实现。 dispatcher servlet的映射不能是for/*的,而必须是类似于/auth的/*

因此,需要一个从ClientCredentialsTokenEndpointFilter继承的特殊过滤器,该过滤器具有特殊路径,如super(“/auth/oauth/token”)

它也不能是/api/*因为这是我们的rest框架(wink RestServlet)映射的真实api URI 所以我们有类似的东西

http://server:port/context/auth/oauth/token
http://server:port/context/api/someresource (protected with oauth2)
http://server:port/context/rest/someresource (old rest for application)
什洛米