我已经在应用程序中实现了spring-security-oauth2,付出了很多努力。 一切都很好。仅使用授权令牌访问资源。 但是当我尝试使用Authorization Header访问不安全的资源时,它会验证访问令牌。
如果访问令牌有效,则其工作正常,但如果访问令牌无效,则会显示错误Invalid access_token
。
答案 0 :(得分:1)
Spring安全性拦截每个请求并检查access_token的有效性,除非显式用户指定允许访问URl。 就像你不想拦截url模式并检查身份验证一样,代码就像
<http ...>
<intercept-url pattern="/app/**" access="IS_AUTHENTICATED_FULLY" />
<intercept-url pattern="/oauth2/resource/**" access="ROLE_USER" />
</http>
但是如果你想在没有任何安全性的情况下访问资源,你可以这样做:
<http pattern="/resources/**" security="none"/>
希望这能解决您的问题
答案 1 :(得分:1)
您必须在OAuth配置文件中配置HTTP模式。检查您是否使用&#39; *&#39;配置网址。
<http pattern="/detail/**" create-session="never"
entry-point-ref="oauthAuthenticationEntryPoint"
xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false" />
<!-- intercept-url pattern -->
<intercept-url pattern="/detail/**" access="IS_AUTHENTICATED_FULLY" />
<custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
<access-denied-handler ref="oauthAccessDeniedHandler" />
</http>
例如,在上面的配置中,我已经确保了所有API的开始&#39;详细信息。您可能还在不知不觉中/无意中使API受到保护。确保你没有!