7
我使用下面的Java配置在Spring Security:混淆使用Java配置
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
基于此配置,所有的请求进行身份验证。当您未经认证而击中控制器时,AnonymousAuthenticationFilter
将为您创建一个身份验证对象username=anonymousUser, role=ROLE_ANONYMOUS
。
我试图提供AA特定的控制器方法匿名访问,并尝试使用以下每一项:
@Secured("ROLE_ANONYMOUS")
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
当被调用的控制方法,给出以下响应: “HTTP状态401 - 访问此资源需要完全身份验证”
有人可以帮助我理解为什么我们收到此消息,并且为什么ROLE_ANONYMOUS
/IS_AUTHENTICATED_ANONYMOUSLY
似乎无法使用此配置?
感谢,
JP
嗯...这是我不够明确。如果我使用前面指定的java config调用给定的url,如果我没有使用基本认证提供凭证,AnonymousAuthenticationFilter步入并创建一个认证对象,但使用ROLE_ANONYMOUS。这不应该仍然工作?我不知道你上面的配置应该是必要的。思考? – user2145809
这是必要的,因为ROLE_ANONYMOUS指示用户是匿名的而不是经过身份验证的。请注意,您在控制器上指定的注释不会覆盖基于URL的安全性,它们将对其进行补充以提供纵深防御(即多层安全性)。 –
Rob,我认为我的困惑源于对带有特定的@RequestMapping(value =“/ mycontroller”)映射注释的控制器方法使用@Secured(“ROLE_ANONYMOUS”)是注释“equivalent”:.antMatchers (“/ mycontroller”)。permitAll()或者.antMatchers(“/ mycontroller”)。hasRole(“ROLE_ANONYMOUS”)。根据你所说的话,注释配置不能替代xml/java配置(比如@RequestMapping是如何替代xml控制器映射的)。它是否正确? – user2145809