我正在尝试设置一个spring 3 webapp,作为另一个使用oauth2为受保护资源提供服务的应用程序的代理。
我们使用的是UsernamePassword授权类型。 我的应用程序不应该知道用户数据库;实际上它会查询其他应用程序以获取有关用户的详细信息(他们拥有哪些权限,以及其他内容)。
我的应用负责显示登录页面。
我想使用自定义的spring-security AuthenticationProvider:
问题是:
所以,如果我尝试在覆盖'retrieveUser'方法中使用OAuth2RestTemplate,我会得到一个例外:
java.lang.IllegalStateException:未建立OAuth 2安全上下文。无法访问资源'avop-services'。 在org.springframework.security.oauth2.consumer.OAuth2ClientHttpRequestFactory.createRequest(OAuth2ClientHttpRequestFactory.java:38) 在org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:76) 在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:434) 在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401) ..等..
(因为这个话题我将它链接到OAuth2ClientSecurityContextFilter:http://forum.springsource.org/showthread.php?98141-error-No-OAuth-2-security-context-has-been-established)
所以我的问题是:
我知道这可能是一个非常具体的案例,但我想知道我是以正确的方式攻击它还是我错过了什么。
提前致谢。
答案 0 :(得分:-3)
解决方案是使用在右侧位置添加过滤器。