Spring安全性 - 允许匿名访问

时间:2015-07-19 23:31:47

标签: java spring spring-security spring-boot spring-security-oauth2

我已经在我的spring-boot应用程序中实现了Oauth2。在我的security-context.xml中,我有这些行 -

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

我希望在没有身份验证的情况下可以使用/ trusted下的所有内容。但是,当我尝试访问/可信资源时,我仍然会提示我进行身份验证(这些资源是RESTful资源)。

我有没有想念别的东西?

[编辑:]我正在使用'提供的'tomcat实例运行此应用程序。

3 个答案:

答案 0 :(得分:6)

您只需要替换受信任的拦截表达式access属性,它应该可以工作:

<sec:intercept-url pattern="/trusted/**" filters="none" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

虽然自从Spring Security 3.1弃用filters以来,您应该使用http标记来达到同样的效果:

<http pattern="/trusted/**" security="none"/>

<http auto-config='true'>
  <intercept-url pattern="/**" access="isFullyAuthenticated()" />
  <form-login login-page='/login.jsp'/>
</http>

You can read more about this here

答案 1 :(得分:1)

<http>
<intercept-url pattern="/trusted/**" access="ROLE_USER,ROLE_GUEST" />
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" />
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" />
<anonymous username="guest" granted-authority="ROLE_GUEST" />
<remember-me />
</http>
  

<anonymous username="guest" granted-authority="ROLE_GUEST" />

您可以定义一个像ROLE_GUEST这样的角色,并提及上述代码的作用。任何匿名成员都可以访问 ROLE_GUEST

下的网址格式

答案 2 :(得分:0)

您配置错误。现在想象一下发生了什么,你告诉Spring安全允许匿名访问/trusted/**下的所有内容,这是好的,但是你再次告诉它限制/**下的所有匿名访问 - 这是应用程序中的每个路径,这显然也限制了对/trusted/**的访问。

您需要将配置更改为以下内容:

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/secure/**" access="isFullyAuthenticated()" />

它会起作用。