Spring-Security-Oauth2中没有access_token的受保护资源

时间:2015-06-17 10:52:24

标签: java spring-security oauth-2.0 spring-security-oauth2

在我的应用程序中,我实现了spring-security-oauth2。除了一个案例外,evrything工作正常。

情节是,我登录系统,我得到oauth2 access_token。我通过提供令牌来请求我的受保护资源,我得到了结果。我再次执行相同的请求而没有任何标头(没有access_token),这次我也获得了受保护的资源。

我的受保护资源相关代码:

<http pattern="/**" create-session="never"
          entry-point-ref="oauthAuthenticationEntryPoint"       
          xmlns="http://www.springframework.org/schema/security">
        <anonymous enabled="true" />
        <intercept-url pattern="/users" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

        <intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />
        <custom-filter ref="customFilter" position="FORM_LOGIN_FILTER"/>
        <custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
        <access-denied-handler ref="oauthAccessDeniedHandler" />
    </http>

我也使用了custm过滤器。我使用像这样的身份验证对象在我的过滤器中打印client_id -

 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
   System.out.println("----------->>>" + ((OAuth2Authentication) authentication).getAuthorizationRequest().getClientId());

使用access_token我得到client_id - &#34; test1&#34;和 在第一次请求后如果我没有access_token我做同样的请求我再次得到相同的client_id =&#34; test1&#34;

还可以访问资源。

我努力了,但代码中没有任何循环漏洞。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这对我有用:

create-session = "never"更改为create-session = "stateless"

希望这有帮助。