我已经在我的spring-boot应用程序中实现了Oauth2。在我的security-context.xml中,我有这些行 -
<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
我希望在没有身份验证的情况下可以使用/ trusted下的所有内容。但是,当我尝试访问/可信资源时,我仍然会提示我进行身份验证(这些资源是RESTful资源)。
我有没有想念别的东西?
[编辑:]我正在使用'提供的'tomcat实例运行此应用程序。
答案 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>
答案 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()" />
它会起作用。