在我的应用程序中,我实现了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;
还可以访问资源。
我努力了,但代码中没有任何循环漏洞。 任何帮助将不胜感激。
答案 0 :(得分:0)
这对我有用:
将create-session = "never"
更改为create-session = "stateless"
希望这有帮助。